2016-03-23 6 views
2

達成したいことはかなりシンプルなようですが、可能かどうかはわかりません。デフォルト値のJavascriptオブジェクト

プロパティが指定されていない場合、特定の値を返すオブジェクトが必要です。例:

console.log(obj) // Returns "123" 
console.log(obj.x) // Returns "ABC" 
+1

いいえ、それはできません。これは何のために必要なのでしょうか? – Bergi

+0

あなたは 'console.log(obj)'でそれを行うことはできませんが、 'console.log(obj + '')' –

+1

でそれを行うことができます[こちら](http://stackoverflow.com)/a/13606589/1048572)しかし、 – Bergi

答えて

1

カスタムオブジェクトのプロトタイプでtoString()メソッドをオーバーライドします。

function MyObj() { 
} 
MyObj.prototype.toString = function() { 
    return '123'; 
}; 
var obj = new MyObj(); 
obj.x = 'ABC'; 
console.log(obj + ''); 
console.log(obj.x + ''); 
+0

@zbが指摘しているように、これはオブジェクトをログ呼び出しで '+ ''で文字列に強制することによってのみ機能します。 –