- var p = {}
- p.name = 'wangBaoQiang'
- p.age = 3
- p.isMale = true
- console.log(p)
- // delete p.isMale
- // console.log(p)
- // Object.freeze(p)
- // delete p.age
- // console.log(p)
- // Object.freeze() 冻结一个对象冻结后对象的属性不能被删除
- // 冻结是冻结的整个对象而不是某一个属性
- // 冻结后属性的值无法改变 不能添加新属性
- // p.age = 4
- // console.log(p)
- // console.log(Object.isFrozen(p))
- // Object.isFrozen() 判断对象是否被冻结
- // console.log(p)
- // Object.seal() 密封一个对象 密封后属性不能被删除 但可以被改变
- // 密封后不能添加新属性
- // Object.seal(p)
- // delete p.age
- // p.age = 8
- // p.height = 99
- // console.log(p)
- // console.log(Object.isSealed(p))
- // Object.isSealed() 判断是否被密封
- // Object.preventExtensions() 只能阻止添加属性或方法 不能阻止删除 不能阻止修改属性或方法
- // Object.preventExtensions(p)
- // p.weight = 22
- // console.log(p)
- // console.log(Object.isExtensible(p))
- // Object.isExtensible() 判断对象是否被扩展
- // console.log(p)
- // freeze > seal > preventExtensions
- // freeze 对象不可改变
- // seal 只能修改值
- // preventExtensions 只能阻止添加属性和方法
- Object.defineProperty(p, 'course', {
- enumerable: false,
- value: 'HTML5'
- })
- console.log(p)
- var keys = Object.getOwnPropertyNames(p)
- console.log(keys)
- // getOwnPropertyNames 获取对象中属性的名字
- keys = Object.keys(p)
- // Object.keys() 返回自身属性
- console.log(keys)
- // for(var key in p){
- // console.log(key)
- // }
- console.log(p.hasOwnProperty('course1'))
- // hasOwnProperty() 判断是否拥有指定的属性
- console.log(p.propertyIsEnumerable('course'))
- // propertyIsEnumerable() 判断属性是否被列举
- var b = new Object(true)
- console.log(b)
- console.log(b.valueOf())
- // valueOf() 从对象中取出值
- console.log(p.toString())
- console.log(b.toString())
- // 每个对象都有toString()方法 但是对象可以改变这个方法的实现从而返回不同的值
- // 一般对象返回[Object 对象构造函数名字]
- // 其他对象不会返回特定的值如布尔对象返回 true/false 字符串
- // Date对象返回 日期字符串
- // 数字对象返回 数字字符串
- var n =new Number(3.14)
- console.log(n.toString())
- console.log(Object.prototype.toString.call(n))
- console.log(Object.prototype.toString.call('ff'))
- // 可以通过上面的方法获取对象的类型
暂无评论