objeto de enumeração

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);
        }

Aqui Insert Picture Descrição
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]);
        }

Aqui Insert Picture Descrição
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]);
            }
        }

Aqui Insert Picture DescriçãoNa verdade imprimir apenas o corpo da propriedade protótipo!
Aqui Insert Picture Descrição
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! Aqui Insert Picture Descrição
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!
Aqui Insert Picture Descrição

Publicado 37 artigos originais · ganhou elogios 0 · Visualizações 700

Acho que você gosta

Origin blog.csdn.net/weixin_43704007/article/details/105001781
Recomendado
Clasificación