タグ付けされた質問 「prototypal-inheritance」

3
AngularJSのスコープのプロトタイプ/プロトタイプの継承のニュアンスは何ですか?
APIリファレンスScopeページは言います: スコープは親スコープから継承できます。 開発者ガイドScopeページは言います: スコープは(典型的には)親スコープからプロパティを継承します。 では、子スコープは常に親スコープからプロトタイプを継承しますか? 例外はありますか? 継承する場合、それは常に通常のJavaScriptプロトタイプの継承ですか?

29
__proto__VS。JavaScriptのプロトタイプ
この図は、すべてのオブジェクトにプロトタイプがあることを示しています。コンストラクター関数Fooには、__proto__Function.prototype という独自の関数もあり、その__proto__プロパティを介してObject.prototypeを再び参照します。したがって、繰り返しますが、Foo.prototypeはFooの明示的なプロパティであり、bおよびcオブジェクトのプロトタイプを参照します。 var b = new Foo(20); var c = new Foo(30); 違いは何ですか__proto__とはprototype? 図はdmitrysoshnikov.comから取られました。

8
なぜネイティブオブジェクトの拡張が悪い習慣なのですか?
すべてのJSオピニオンリーダーは、ネイティブオブジェクトを拡張することは悪い習慣だと言っています。しかし、なぜ?パフォーマンスに影響はありますか?彼らは誰かがそれを「間違った方法」で行うことを恐れて、列挙可能な型をObjectに追加し、実際に任意のオブジェクトのすべてのループを破壊しますか? テイクTJ Holowaychukのshould.jsを例えば。彼はシンプルなゲッターを追加しObject、すべてが正常に動作します(ソース)。 Object.defineProperty(Object.prototype, 'should', { set: function(){}, get: function(){ return new Assertion(Object(this).valueOf()); }, configurable: true }); これは本当に理にかなっています。たとえば、拡張することができますArray。 Array.defineProperty(Array.prototype, "remove", { set: function(){}, get: function(){ return removeArrayElement.bind(this); } }); var arr = [0, 1, 2, 3, 4]; arr.remove(3); ネイティブ型の拡張に反対する議論はありますか?

4
myObj.hasOwnProperty(prop)の代わりにObject.prototype.hasOwnProperty.call(myObj、prop)を使用する理由
私が正しく理解している場合、JavaScriptのすべてのオブジェクトはObjectプロトタイプを継承します。つまり、JavaScriptのすべてのオブジェクトは、プロトタイプチェーンを通じてhasOwnProperty関数にアクセスできます。 require.jsのソースコードを読んでいるときに、私はこの関数を偶然見つけました。 function hasProp(obj, prop) { return hasOwn.call(obj, prop); } hasOwnへの参照Object.prototype.hasOwnPropertyです。この関数を次のように書くことに実際的な違いはありますか function hasProp(obj, prop) { return obj.hasOwnProperty(prop); } そして、私たちがそうしているので、なぜこの関数をまったく定義しないのですか?(わずかな)パフォーマンス向上のためのプロパティアクセスのショートカットとローカルキャッシングの問題ですか、またはこのメソッドを持たないオブジェクトでhasOwnPropertyが使用される可能性があるケースがないのですか?

11
JavaScriptのプロトタイプベースの継承の良い例
私はOOP言語で10年以上プログラミングを行っていますが、現在JavaScriptを学習しています。プロトタイプベースの継承に出会ったのはこれが初めてです。私は良いコードを勉強することで最も速く学ぶ傾向があります。プロトタイプ継承を適切に使用するJavaScriptアプリケーション(またはライブラリ)の適切に記述された例は何ですか?また、プロトタイプの継承がどのように/どこで使用されているのか(簡単に)説明できますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.