廃止
この機能は廃止されました。まだいくつかのブラウザーで動作するかもしれませんが、いつ削除されてもおかしくないので、使わないようにしましょう。
toSource()
メソッドは、オブジェクトのソースコードを表す文字列を返します。
構文
Object.toSource(); obj.toSource();
返値
オブジェクトのソースコードを表す文字列です。
解説
toSource()
メソッドは以下の値を返します。
- 組み込みの
Object
オブジェクトに対しては、toSource()
はソースコードが利用できないことを示す次の文字列を返します。function Object() { [native code] }
Object
のインスタンスに対しては、toSource()
はソースコードを表す文字列を返します。
デバッグ時に toSource()
を呼び出して、オブジェクトの内容を調べることができます。
toSource() メソッドのオーバーライド
オブジェクトが toSource()
メソッドをオーバーライドしても安全です。例えば次のコードを見てください。
function Person(name) {
this.name = name;
}
Person.prototype.toSource = function Person_toSource() {
return 'new Person(' + uneval(this.name) + ')';
};
console.log(new Person('Joe').toSource()); // ---> new Person("Joe")
組み込み toSource() メソッド
コア JavaScript のそれぞれの型は独自の toSource()
メソッドを持っています。これらのオブジェクトの例を示します。
Array.prototype.toSource()
—Array
オブジェクトBoolean.prototype.toSource()
—Boolean
オブジェクトDate.prototype.toSource()
—Date
オブジェクトFunction.prototype.toSource()
—Function
オブジェクトNumber.prototype.toSource()
—Number
オブジェクトRegExp.prototype.toSource()
—RegExp
オブジェクトString.prototype.toSource()
—String
オブジェクトSymbol.prototype.toSource()
—Symbol
オブジェクトMath.toSource()
— 文字列 "Math" を返す。
循環オブジェクトの正弦
再帰的にリンクされたリストや双方向に移動可能なツリーなど、自分自身への参照を含むオブジェクトの場合、 toSource()
は Firefox 24 のように自己参照を再生成しません。例えば、次のようになります。
var obj1 = {};
var obj2 = { a: obj1 };
obj1.b = obj2;
console.log('Cyclical: ' + (obj1.b.a == obj1));
var objSource = obj1.toSource(); // returns "({b:{a:{}}})"
obj1 = eval(objSource);
console.log('Cyclical: ' + (obj1.b.a == obj1));
循環構造が採用されていて toSource()
が必要な場合、オブジェクトはコンストラクターへの参照を使用するか、無名関数を提供するかのいずれかの方法で、 toSource()
へのオーバーライドを提供しなければなりません。
例
toSource() の使用
次のコードは Dog
オブジェクト型を定義して theDog
、すなわち Dog
型のオブジェクトを生成します。
function Dog(name, breed, color, sex) {
this.name = name;
this.breed = breed;
this.color = color;
this.sex = sex;
}
theDog = new Dog('Gabby', 'Lab', 'chocolate', 'female');
toSource()
メソッドを theDog
に対して呼び出すと、そのオブジェクトを定義する JavaScript のソースが表示されます。
theDog.toSource();
// returns ({name:"Gabby", breed:"Lab", color:"chocolate", sex:"female"})
仕様書
標準の一部ではありません。 JavaScript 1.3 で実装されました。
ブラウザーの互換性
BCD tables only load in the browser