とほほのJavaScript入門(オブジェクト)

とほほのWWW入門 > とほほのJavaScript入門 > オブジェクト
2000年3月25日版

オブジェクト(Object)

Object() (e3/N2)
o = new Object(); の形式でオブジェクトを生成する。

object
オブジェクト。

object.constructor (e4/N3)
オブジェクトのコンストラクタ(生成関数)。

Object.prototype.newName (e4/N3)
このオブジェクトタイプに新しい属性を定義する。NumberやStringや、Functionで作成したユーザー定義オブジェクトなど、すべてのオブジェクトタイプに対して使用可能。
    Object.prototype.newZokusei = null;
    oo = new Object();
    oo.newZokusei = "xxx";

object.eval(string) (e4/N3)
stringをJavaScriptコードと見なして実行する。N4からはビルトイン関数として実装されている。

object.toString([radix]) (e3/N3)
オブジェクトを文字列に変換する。オブジェクトが数値の場合はradix進数(2〜16)で変換する。ただし、IE3ではradixを未サポート。文字列への変換規則は LANGUAGE="..." に指定したJavaScriptのバージョンで動作が異なるので注意が必要。

object.toSource() (N45)
オブジェクトを文字列に変換する。toString()だと [object Object] としか表示されなかったところを、{name:"Tanaka", age:26} や { "AA", "BB", "CC" } などのように、オブジェクトのプロパティまで表示するよう改善された。

ユーザー定義オブジェクト

JavaScriptでは標準で用意されているオブジェクトのほか、以下のようにしてユーザー定義のオブジェクトを生成することができる。
    function getName() { return(this.name); }
    function getAge() { return(this.age); }
    function Person(name, age) {
        this.name = name;
        this.age = age;
        this.getName = getName;
        this.getAge = getAge;
    }
    p = new Person("Suzuki", 28);
    document.write(p.getName(), "<BR>");
    document.write(p.getAge(), "<BR>");
function宣言を上記のように用いると、Personという型(クラス)が定義される。これはnameとageをプロパティとして持ち、getName()とgetAge()をメソッドとして持つ。Person()関数はPerson型の生成関数(コンストラクタ)として扱われる。Personオブジェクトを使用するには new 演算子を用いる。

IE4.0/NN4.0以降では、下記のようにして、簡易的にオブジェクトを生成することができる。

    var xx = { name: "Suzuki", age: 24 };
    document.write(xx.name + "<BR>");
    document.write(xx.age + "<BR>");

JavaScript1.3ではさらに、クラスの継承を実現するためのcall()apply()が追加された。以下のいずれかの形式を用いることで、PersonクラスのサブクラスMember1やMember2を生成することができる。

    function Member1(name, age, id) {
        this.id = id;
        Person.call(this, name, age);
    }

    function Member2(name, age, id) {
        this.id = id;
        Person.apply(Person, arguments);
    }


Copyright (C) 1996-1999 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwjsobj.htm