--- 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")}}