--- title: Object.prototype.toSource() slug: Web/JavaScript/Reference/Global_Objects/Object/toSource tags: - JavaScript - Method - Non-standard - Object - Obsolete - Prototype translation_of: Web/JavaScript/Reference/Global_Objects/Object/toSource ---
toSource() メソッドは、オブジェクトのソースコードを表す文字列を返します。
Object.toSource(); obj.toSource();
オブジェクトのソースコードを表す文字列です。
toSource() メソッドは以下の値を返します。
toSource() はソースコードが利用できないことを示す次の文字列を返します。
function Object() {
[native code]
}
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")
コア JavaScript のそれぞれの型は独自の toSource() メソッドを持っています。これらのオブジェクトの例を示します。
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() へのオーバーライドを提供しなければなりません。
次のコードは 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 で実装されました。
{{Compat("javascript.builtins.Object.toSource")}}