Enumerationオブジェクトは、ループのために、横断オブジェクトが含まれている属性を参照します
var wangjia = {
wife1: {
name: "xiaoli"
},
wife2: {
name: "xiaozhao"
},
wife3: {
name: "xiaozhang"
},
wife4: {
name: "xiaowang"
},
sayWife: function(num) {
return this["wife" + num];
}
};
for (var prop in wangjia) {
console.log(prop);
}
オブジェクトのプロパティとメソッド名の内側には、プリントアウトされているが、我々は、プロパティ値の正確な方法を知りませんでした!
var wangjia = {
wife1: {
name: "xiaoli"
},
wife2: {
name: "xiaozhao"
},
wife3: {
name: "xiaozhang"
},
wife4: {
name: "xiaowang"
},
sayWife: function(num) {
return this["wife" + num];
}
};
for (var prop in wangjia) {
console.log(wangjia.prop);
}
ここでの操作は、[「小道具」]王家に変換されますが、オブジェクトは王家の小道具のプロパティではありません、それは5つの未定義の背景が印刷されます!
var wangjia = {
wife1: {
name: "xiaoli"
},
wife2: {
name: "xiaozhao"
},
wife3: {
name: "xiaozhang"
},
wife4: {
name: "xiaowang"
},
sayWife: function(num) {
return this["wife" + num];
}
};
for (var prop in wangjia) {
console.log(wangjia[prop]);
}
プロパティのみ、なしプロパティ名の値を出力します!変数と属性の違いにそれほど注意を払います!
プロトタイプの身体を含む性質は、プリントアウトされているので、しかし、彼は手動で変更されます!だから、プロパティにfunction hasOwnPropertyかどうかを判断するために彼に出てきます
var wangjia = {
wife1: {
name: "xiaoli"
},
wife2: {
name: "xiaozhao"
},
wife3: {
name: "xiaozhang"
},
wife4: {
name: "xiaowang"
},
sayWife: function(num) {
return this["wife" + num];
},
__proto__: {
wa: "uu"
}
};
for (var prop in wangjia) {
if (!wangjia.hasOwnProperty(prop)) {
console.log(wangjia[prop]);
}
}
実際、prototypeプロパティの本文のみをプリントアウト!
instanceofのオブジェクトAとオブジェクトBはオブジェクトAがBのコンストラクタに構成されているかどうかを指します!これは公式の説明ですが、はっきりしませ王家オブジェクトコンストラクタオブジェクトが、彼のプロトタイプチェーンのプロトタイプオブジェクトがあります!- 「だから最後に、機能が正確にB鎖Aのプロトタイプオブジェクトのプロトタイプが存在するかどうかを決定します!
オブジェクトを識別するためのアレイまたは、VAR ARR = [] || { }?どうかを判断するために
、実際にオブジェクト-としてカウント配列!
方法1:自分のコンストラクタは同じではありません!
方法2:配列はオブジェクトであるので、配列のプロトタイプチェーン上のプロトタイプのオブジェクトでなければならない
オブジェクトのプロトタイプチェーン上のプロトタイプ配列なし!
方法3:使用Object.prototype.toString.call([])
[]配列のtoString印刷法プロトタイプオブジェクトに応じて!