Object.create()の探査

最近の時間枠では、著者(または寄与者)は、オブジェクト、継承を作成または実行する際際、Object.createを使用したいことを、ソースコードを参照していました()。

MDNは、この第一の方法で、非常に明確に説明しました

Object.create(プロト【、propertiesObject])

オブジェクトに渡される最初のパラメータ、(PS:[]はオプションである)直接オブジェクトである場合、MDNとして解釈「プロトタイプオブジェクト新しく作成されたオブジェクト、」一般的なパスxx.prototypeは、さらにネストされた層__proto__なり例えば:

var o = Object.create({},{
    a:{
           writable:true,
        configurable:true,
        value:'1'
    }
})
console.log(o)

__proto__は、暗黙的にプロトタイププロトタイプオブジェクトのコンストラクタを指しているため、直接問題以下xx.prototypeを送信していない場合は、以下を参照してくださいすることができます。
ここに画像を挿入説明

第2のパラメータはpropertiesObjectある属性(すなわち、それ自身の定義されたプロパティではなく、プロトタイプチェーンに列挙属性)属性記述子オブジェクトと対応する属性名新しく作成されたオブジェクトに追加される挙げることができます。これらの特性は、第二のパラメータのObject.definePropertiesを()に対応します。何が一般的に、値値値値は、私たちのオブジェクトの最後で、このような、それを読み書きなどの他の不動産関連の設定パラメータを、持っている、このメソッドの2番目のパラメータ)あなたは(DefinePropertiesメソッドを見に行くことができ、特定の属性を列挙することができますクラス。

あなたは上記を理解すれば、Object.createの使用は非常に重要な理由は、我々は(null)を作成して、「クリーン」なオブジェクトを作成することができるということです。
例えば:
ここに画像を挿入説明
ヌルを通過した後、新しく作成されたオブジェクトにはプロパティがありません。カスタムプロトタイプチェーンを上書きする属性を心配しないでください。我々は{}を作成するために使用する場合などは、私たちは財産をa.toString、ターゲットをカスタマイズしa.hasOwnPropertyプロパティを確認したい、あなたは直接a.toStringを通じて、a.hasOwnProperty直接アクセスは、プロパティは、プロトタイプを妨害することはできませんので、あなたがのtoStringプロパティを確認したい場合は、学校の走査で行われる必要があるため、私たちは、そのような面倒な方法と少しパフォーマンスの無駄で、チェックを行うためにObject.prototype.hasOwnProperty.call(「のtoString」)の前にあります経験。(もちろん、あなたがObject.keysを使用することができます)

使用すると、非常にきれいで、カスタマイズ性の高いオブジェクト(オブジェクトの継承を共有する方法がないため、ヌル転送は、データ・ディクショナリと呼ばれることができるオブジェクトを呼び出すことはできませんした後でも)しない限り、シナリオに何人に依存しないか、{それ}を使用します。

おすすめ

転載: www.cnblogs.com/zhangmingzhao/p/11347789.html