获取对象属相 点运算符 和方括号 运算符


var foo = 'name' var obj = { foo:'恭迎夷陵老祖', name:'魏无羡' } obj.foo //恭迎夷陵老祖 obj['foo'] //恭迎夷陵老祖 obj[foo] //魏无羡
Object.keys(obj) // ['foo','name']

点运算符 和方括号运算符 都可以获取对象的属性值。不同的是 方括号运算符 在获取对象的属性值时要加引号,如果不加引号 会被当做变量处理。

属性的查看:Object.keys()方法。

属性的删除:delete

var obj = { 
     p: 1 
};
Object.keys(obj) // ["p"]

delete obj.p // true
obj.p // undefined
Object.keys(obj) // []

delete 删除对象的属性,删除成功后返回true。如果删除一个不存在的属性,不会报错,返回true。

var obj ={}

deleter obj.p //true

只有当该属性存在,且不得删除时才返回false,另外,

delete只能删除自身的属性,不能删除继承的属性,但是仍然会返回true,只是不能删除。

var obj = {};
delete obj.toString // true
obj.toString // function toString() { [native code] }

属性是否存在 :in运算符

in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。它的左边是一个字符串(要用引号包裹),表示属性名,右边是一个对象。

它不能识别哪些属性是对象自身的,哪些属性是继承的。

        var obj = {
            p:'123'
        }
        'p' in obj  //true
        'toString' in obj //true

hasOwnProperty 可以识别哪些属性是自身的 

obj.hasOwnProperty('toString')  // false
obj.hasOwnProperty('p') // true

属性的遍历 for...in

var obj = {a: 1, b: 2, c: 3};

for (var i in obj) {
  console.log('键名:', i);
  console.log('键值:', obj[i]);
}
// 键名: a
// 键值: 1
// 键名: b
// 键值: 2
// 键名: c
// 键值: 3
  • 它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
  • 它不仅遍历对象自身的属性,还遍历继承的属性。
    所以我们在使用遍历时与  hasOwnProperty 方法结合,判断它是否是自身的属性。
            var person = {
                name:'魏无羡'
            }
    
            for(var p in person){
                if(person.hasOwnProperty(p)){
                    console.log(p) // name
                }
            }

原文链接 https://wangdoc.com/javascript/types/object.html

猜你喜欢

转载自www.cnblogs.com/lpp-11-15/p/11284278.html