いいえ。プロトタイプ化されたメソッドは、オブジェクト コンストラクターで実行されます。のデフォルト値var foo
はundefined
、コンストラクターを持たない です。
を拡張することで、すべてのオブジェクトにメソッドを追加できますObject.prototype
。
Object.defineProperty(Object.prototype, 'doTheFoo', {
value: function() { alert('foo'); }
});
これで、オブジェクト ラッパーを持つ任意の値でメソッドを使用できるようになりました。
Object.defineProperty
割り当てに使用したことに注意してください。これは、ES5 準拠の実装でのみ使用できます。プロパティを列挙不可能にするため、比較的安全です。
undefined
これをテストの代わりに値で機能させたいと思われるので、 をテストする必要がないtypeof
という事実を考慮してください。typeof
undefined
これがあなたが言われたことであるなら、あなたはだまされています。多くの人がこれを考えていますが、それは彼らがいつも言われていることだからです. それは本当ではない。
次のテストは、完全に安全なテストですundefined
...
if (foo === undefined) {
...次のことに注意する限り...
window.undefined
別の値でシャドーイングしたり定義したりしないでください
#1に違反するコードは絶対に使用しないでください
宣言されていない変数の値を取得しようとしないでください
破損していない環境を維持する責任を負う(非常に単純なタスク)と、問題は発生しません。