Enumeração objecto refere-se ao atributo do objecto atravessado contém, para o laço
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);
}
O interior das propriedades do objeto e nomes de métodos são impressos, mas não sabíamos o método exato do valor do imóvel!
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);
}
Aqui a operação é convertido em Wangjia [ 'prop'], mas o objeto não é Wangjia prop propriedades, ele irá imprimir cinco indefinido fundo!
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]);
}
só irá imprimir o valor da propriedade, há nomes de propriedade! Então, preste atenção para a diferença entre variáveis e atributos!
Mas ele será modificado manualmente para propriedades, incluindo o corpo do protótipo são impressos fora! Então venha para ele para determinar se um hasOwnProperty função de propriedade
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]);
}
}
Na verdade imprimir apenas o corpo da propriedade protótipo!
O instanceof Um objeto B refere-se ao facto do objecto A é construído no construtor de B! Esta é a explicação oficial, mas claramente não Wangjia construtor Object objeto, mas há um objeto de protótipo de sua cadeia de protótipos! - "Então, finalmente, a função de determinar com precisão se existe um protótipo do objeto Um protótipo da cadeia B!
Array ou para distinguir objetos, var arr = [] || { }? Como determinar o
conjunto realmente contado como um object-!
Método um: o seu construtor não é o mesmo!
Método dois: Desde a matriz é um objeto, em seguida, na cadeia de protótipos da matriz deve ser objeto de um protótipo
, sem uma matriz protótipo na cadeia de protótipos do objeto!
Método 3: Utilização Object.prototype.toString.call ([])
O [] matriz toString método de impressão de acordo com o objecto protótipo!