オブジェクトと関数の使用方法



 JavaScriptには以下のオブジェクトと関数(ファンクション)が用意されています。 またNetscape Navigator 4.0 (1997/5/22現在b3版です)では、命令およびイベントが大幅に拡張されています。今後の変更の伴い、さらに拡張されると思われます。まだ、説明が間に合ってないものもあります(すみません-.-b)


◆文字列オブジェクト(String Object)の使用方法
 文字列は変数またはプロパティとして作成します。定数となっている文字列も文字列オブジェクトの中に含まれます。

mystring = "減ろう、Windows95"

mystringというオブジェクトに"減ろう、Windows95"という文字列を入れます。"落日Microsoft"という文字列もまた文字列オブジェクトになります。文字列の場合はダブルクォーテーション(”)またはクォート(’)で囲みます。この2つの記号の使い分けですが、文字列の中にダブルクォーテーション(”)が含まれている場合はクォート(’)で囲みます。逆にクォート(’)でが含まれている場合はダブルクォーテーション(”)で囲みます。<A HREF>タグの中にイベントハンドラを記述する場合はクォート(’)で囲む方が多いようです。

 例えばオブジェクトに先ほどの文字列"減ろう、Windows95"が入っているとするとmystring.toUpperCase()というオブジェクトは"∈ろう、WINDOWS95"というすべて大文字になった文字列が返されます。また"減ろう、Windows95".toUpperCase()でも同様の結果となります。日本語の場合今のように文字化けを起こしてしまい場合があります。気をつけましょう。
 先ほどはmystringという文字列オブジェクトを使って文字を変換しましたが、次のようにしても同じ結果が得られます。

"減ろう、Windows95".toUpperCase()


◆数値演算オブジェクト(Math Object)の使用方法
 JavaScriptには数値演算用のプロパティ、メソッド、関数、定数が用意されています。例えばPIというプロパティは円周率(3.1415...)という値になっており以下のように使用します。

Math.PI

 基本的な関数やメソッドは、標準で用意されています(三角関数、自然対数、階乗等)。例えば三角関数のsin(正弦)は以下のように使用します。

Math.sin(1.56)

 全ての三角関数はラジアンで指定することになっているので注意が必要です。度(デグリー)で指定できると楽ですが、新しいバージョンでも変更はないでしょう、残念。
 これらはMathオブジェクトに含まれており定数やメソッドになっています。またwith命令を使用すればオブジェクト名Mathを省略して記述することもできます。例えば以下のようになります。

with (Math) {
a = PI * r*r;
y = r*sin(theta)
x = r*cos(theta)
}


◆日付/時刻オブジェクト(Date Object)の使用方法
 JavaScriptは日付/時刻オブジェクトは日付/時刻の読み出しおよび設定が可能です。日付/時刻は1970年1月1日0時からカウントされた値になります。なお、カウントカウント開始の日付や時刻は変更することはできません、あしからず。
 日付/時刻オブジェクトを生成するには以下のようにします。

varName = new Date(parameters)

 JavaScriptはvarNameという名前で日付/時刻を生成します。後は日付/時刻の読み出しおよび設定はvarNameで行うことができます。
 日付/時刻オブジェクトには以下のパラメーターを指定することができます。

・パラメータなし:現在の日付や時刻を生成します。例:today = new Date() ・以下の文字列:Month day, year, hours:minutes:seconds":例:Xmas95= new Date("December 25,1995 13:30:00") 。時分秒を省略した場合は00:00:00に設定されます。
・パラメータに整数を設定した場合、それぞれ年月日となります。例:Xmas95 = new Date(95,11,25)
・年月日時分秒:例:Xmas95 = new Date(95,11,25,9,30,0)

 メソッドは以下のように分類されます。

・set:日付と時刻の設定
・get:日付と時刻の読み出し
・to:文字列を返す
・parseとUTC:日付文字のパルスカウント数

 getとsetメソッドは日付、時刻を別々に読み出したり設定することができます。 getDayメソッドは週を返しますがsetDayメソッドで設定しても戻ってくる値は自動的に内部で設定されますので意味がありません。これらの数値範囲を以下に示します。

 ・分、秒:0〜59
 ・  時:0〜23
 ・  日:0〜6(週)
 ・  日:1〜31
 ・  月:0(1月)〜11(12月)
 ・  年:1900〜

 例えば以下のように日付を設定します。

Xmas96 = new Date("December 25, 1996")

 Xmas96.getMonth()とすると11を返します。またXmas96.getYear()とすると96が返ってきます。
 getTimeとsetTimeメソッドを使用し日付を比較する事ができます。getTimeメソッドはミリセコンド単位で値を返します。例えば以下の例ではクリスマスまでの日数を表示します。

today = new Date()
nextXmas = new Date("December 25, 1997")
nextXmas.setYear(today.getYear())
msPerDay = 24 * 60 * 60 * 1000 ; //カウント数を算出します
daysLeft = (nextXmas.getTime() - today.getTime()) / msPerDay;
daysLeft = Math.round(daysLeft);
document.write("Number of Shopping Days until Christmas: " + daysLeft);

 この例ではtodayというオブジェクトを生成し(現在の日付が入ります)、もう一つクリスマスの日付のオブジェクトを生成しています(こちらには1997年12月25日の日付になります)。この後クリスマスの日付から今日の日付のカウントを算出します。そして双方を比較し差分を求めた後、クリスマスまでの日数を表示します。
 以下の例ではオブジェクトに日付のカウント数を設定しています。

IPOdate = new Date()
IPOdate.setTime(Date.parse("Aug 9, 1995"))


◆用意されている関数の使用方法
 JavaScriptには以下の関数が用意されています。

 ・eval
 ・parseInt
 ・parseFloat


◆eval関数
 eval関数は引数に文字列が必要です。ただし使用できる文字列はJavaScriptで評価できるものでなければなりません。例えば"2+3*10"といったような文字列です。
 以下の例では最初のフィールドに数値を入れてボタンを押すと結果が表示されます。例えば(666 * 777) / 3と入力してボタンを押すと以下のようになります。

<SCRIPT>
function compute(obj) {
   obj.result.value = eval(obj.expr.value)
}
</SCRIPT>
<FORM NAME="evalform">
数式入れてちょ〜ん: <INPUT TYPE=text NAME="expr" SIZE=20 >
<BR>
その結果は: <INPUT TYPE=text NAME="result" SIZE=20 >
<BR>
<INPUT TYPE="button" VALUE="Click Me" onClick="compute(this.form)">
</FORM>

数式入れてちょ〜ん:
その結果は:

 この関数はMathオブジェクトにあるメソッドも使用することが出来ます。また、あらかじめ変数を指定しておくことで、数式内で変数も使用することができます。

フォームの値同士を計算する場合は、注意が必要です。フォームの値を一度変数に入れてしまうと、演算式で+(加算)を使用した場合、文字列として結合されてしまいます。これを解決するには、フォームの値を読み出す時にeval(読み出すフォーム)のように最初に数値として認識させます。


◆parseIntとparseFloat関数
 JavaScriptには文字列を数値に変換する関数が用意されています。parseInt()は文字列を整数に変換します。ただし、小数以下は切り捨てられます。parseFloat()は小数部分も含めて変換を行います。この2つの関数はオプションで16進数、8進数の指定ができます。また変換できない数式であればNaNを返します。