ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript学習メモ8 JSONでプロトタイピング_基礎知識

Javascript学習メモ8 JSONでプロトタイピング_基礎知識

WBOY
WBOYオリジナル
2016-05-16 18:36:421116ブラウズ

コードは次のとおりです:

コードをコピー コードは次のとおりです:




しかし、この方法では People をプロトタイプとして使用できないことがわかりました。 — —プロトタイプチェーンの原理に関するこの記事では、次のプロセスについて考えてみましょう:
var p=new People();==>p.__proto__=People.prototype。したがって、p.SayHello() を実行するときに、People.prototype にアクセスしてそれを見つけますが、何も見つかりません。

People.prototype.SayHello=function(){} であれば、この問題は解決できます。しかし、プロトタイプを持つことができるのは関数だけであることはわかっています。

それでは、先ほどの導出式について考えてみましょう。p.SayHello() はどのように作成できるでしょうか? p.__proto__=People とできればいいですね。

new では、特定のオブジェクトの __proto__ は特定の関数のプロトタイプとのみ等しいため、関数 X を設定し、p.__proto__=X.prototype とします。次に、X.prototype=People を設定します。関係は次のとおりです:



コードをコピー コードは次のとおりです:


これは、X を使用して中間変数を作成することと同等であり、JSON オブジェクトの内部プロパティにアクセスできます。しかし、これはエレガントではありませんか?オブジェクトを作成するたびに、このような補助関数を記述する必要があります。さて、このプロセスをカプセル化しましょう:




コードをコピー

コードは次のとおりです:
return result;
var people(People,"kym",21); people.SayHello();


しかし、これには欠点もあります。つまり、クラスを追加するたびに、Factory に新しいメソッドを登録する必要があり、これが非常に面倒でした。かなり前の話です。 遊び方: call と apply の違いについては説明しましたが、ここでのパラメータは固定されていないため、1 つずつリストすることはできません。そのため、ここで apply を使用してこのメ​​ソッドを改善できます。 🎜>



コードをコピーします


コードは次のとおりです: