1.オブジェクトのプロパティ
人= {} LET;
Object.defineProperty(人物、「名称」、{
設定可能:属性を再定義するようにすることにより、プロパティ変更できるかどうかを示すtrueに、//削除します属性
によってかどうかを示すために、真//:列挙し-inリターンプロパティサイクル
書き込み可能:真は、//それは、プロパティの値が変更できるかどうかを示す
「xujiang」プロパティの値//:値を
})
/ *コールObject.defineProperty()メソッドで新しいプロパティを作成するときに指定されている場合ではないの前に、 3つの属性フィールドは、デフォルト値は変更がプロパティを定義されている場合、この制限はありません、偽です* /
2.アクセスプロパティ// GET / SET
LET = {人物名: "xujaijgn"、今年:. 11};
Object.defineProperty(人、 "_name"、{
GET:機能(){
リターンthis.name
}、
//原因のセットを定義したとき、プロパティの他のプロパティの設定値が変更
{関数(newValueに)セットは
、this.name = newValueに
= this.year 12であり;
}
})
//定义多个属性
Object.defineProperties(書籍、{
_year:{
書き込み可能:偽、
値:2001
}、
年:{
取得:機能(){
リターン_year
}、
セット:機能(newValueに){
this._year = newValueに;
}
}
})
2.オブジェクトの属性を分析することhasOwnPropertyを内に存在します
オブジェクトのプロパティが存在するかどうかを決定します
そこhasOwnPropertyをプロパティのインスタンスかどうかを判断します
削除しますオブジェクト属性
例:
機能人(){
}
Person.protype.name = 'ウォン';
だった人=新しい人();
console.log(person.name)//フェイ
console.log(一人で名)//真
console.log(person.hasOwnProperty( '名前'))//偽
person.name = 'ダニエル';
console.log(person.hasOwnProperty( '名前'))//はtrue。
3. JSは徹底的にプロトタイプを知るため、__ proto__およびコンストラクタ
new演算子の関数が呼び出され、その後、新しいオブジェクトを作成し、我々はコンストラクタ関数内このパラメータの初期設定を渡すことができることを意味し、これが作成される新しいオブジェクトへのポインタである。この時点で、関数の内部、あるコンテキスト(の機能となっています値)、及び新しいオブジェクトへの参照を返します
__proto__
ある性質、固有のオブジェクトは、参照__proto__
属性がであるオブジェクトへのオブジェクトポイント、それらのプロトタイプオブジェクトへのどのポイント(親オブジェクトことを理解されたいです)
そののprototypeプロパティの役割は、すべてのプロパティとメソッドは、機能が共通のプロパティとメソッドを見つけることができるオブジェクトをインスタンス化させ、ある特定の種類の株式例に対して行うことができる含めることです。
constructorプロパティがある被写体が唯一持っていることはあり、機能へのオブジェクトポイントつまり、オブジェクトのコンストラクタへのポイントは、各オブジェクトはコンストラクタを持っている(自身が所有または組み合わせるために継承され、継承された__proto__
プロパティが意志を表示しますより明確に、以下に示すように)
4.プロトタイプチェーン
VARはFoo =関数(){} VARのFOO =新規のfoo();
FOO .__プロト__ === Foo.prototype
Foo.prototype .__プロト__ === Object.protype。
Object.protype .__プロト__ === nullを。
参考ブログのアドレス:
https://blog.csdn.net/cc18868876837/article/details/81211729
http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance_continued.html
https://juejin.im/post/5d8c86d06fb9a04e172071a0