JS --- 对象的类型、属性

对象类型

对象类型

Q:函数对象和普通对象的区别?

  • 函数对象和内部对象都有prototype属性,普通对象没有。
  • proto是每个对象都有的属性。

对象属性的读取和设置

. 和 [ ] 两种方式。
[ ] 可以用变量和数字作为属性名,.则不行。

      var obj = {
            name: 'zhangsan',
            age: 20,
            play: function () {
                console.log('playing');
            }
        }
        //属性的读取
        console.log( obj.name );
        console.log( obj['age'] );

        var n = 'name';
        console.log(obj[n]);
        //属性的设置
        obj.sex = '男'
        obj['age'] = 22
        Object.defineProperty(obj,'name',{
            value:'lisi',
            writable:true,
            enumerable:true,
            configurable:true
        })

        

属性的分类

分为实例(自有)属性和继承属性

属性的删除

delete() 只能删除自有属性,不能删除继承属性。

属性的检测

  • in 检测对象是否含有某个属性
  • hasOwnProperty 判断一个属性是否是对象自有的。
  • propertyEnumerable 判断属性是否为可枚举的。
    obj.propertyEnumerable('name')

属性的遍历

1、for ... in 遍历对象可枚举的实例和继承属性
2、Object.keys() 返回一个数组,包含对象可枚举的实例属性名称
Object.values()
3、Object.getOwnPropertyNames(obj) 返回对象的所有实例属性名称的数组。包含可枚举和不可枚举的。

序列化对象

JSON.stringify(obj[,replacer][,space])
第一个参数 输入对象
第二个参数 过滤参数 数组或方法 可选
第三个参数 控制字符串之间的间距

       var person = {name:'zhangs',age:34,sex:'man'}
       console.log(JSON.stringify(person)); //{"name":"zhangs","age":34,"sex":"man"}
       console.log(JSON.stringify(person,['name','age']));

       console.log(JSON.stringify(person,['name','age'],5));
       console.log(JSON.stringify(person,['name','age'],'\t'));
       console.log(JSON.stringify(person,['name','age'],'ABC'));
结果

JSON.parse()

你可能感兴趣的:(JS --- 对象的类型、属性)