js对象

75 阅读1分钟

JS 对象基本用法

  1. 声明对象的两种语法
    • let obj = { 'name': 'frank', 'age': 18
    • let obj = new Object({'name': 'frank','age': 18})
  2. 如何删除对象的属性
  3. delete obj.xxx 或 delete obj['xxx']即可删除 obj 的 xxx 属性

    请区分「属性值为 undefined」和「不含属性名」

    • 不含属性名
    • 'xxx' in obj === false
    • 含有属性名,但是值为 undefined
    • 'xxx' in obj && obj.xxx === undefined 注意 obj.xxx === undefined 不能断定 'xxx' 是否为 obj 的属性
  4. 如何查看对象的属性
    • 查看自身所有属性:
    • Object.keys(obj)
    • 查看自身+共有属性:
    • console.dir(obj)
    • 或者自己依次用 Object.keys 打印出 obj.__proto__
    • 判断一个属性是自身的还是共有的:
    • obj.hasOwnProperty('toString')
      查看属性
    • 中括号语法:obj['key']
    • 点语法:obj.key
    • 坑新人语法:obj[key] // 变量 key 值一般不为 'key'
  5. 如何修改或增加对象的属性
    • 改自身:obj['name']='jack'
    • 批量改自身:Object.assign(obj,{age:18,gender: 'man'})
    • 改共有属性:obj.__proto['toString']='xxx'
    • 改共有属性:Object.prototype['toString']='xxx'
    • 改原型:obj.__proto_=common
    • 改原型:let obj=Object.cerate(common)
    • 基本同上,已有属性则改;没有属性则增
  6. 'name' in obj和obj.hasOwnProperty('name') 的区别
        function Person (){
        }
        Person.prototype.name = "原型的名字";
        var p1 = new Person();
        
        //使用in判断对象中是否由属性时,若自身没有,在原型中找到也是返回true
        console.log("name" in p1);
        
        //使用hasOwnProperty()判断对象是否含有属性时,只有自身有才后悔返回true
        console.log(p1.hasOwnProperty("name"));