删除对象本身上的属性和方法
语法:delete 对象.属性名
var obj = {
name: 'lucy',
age: 12
}
delete obj.age; //删除age属性
console.log(obj)
Object.defineProperty
给对象添加键值对
语法:Object.defineProperty(obj,prop,descriptor)
参数:
-
obj:要设置属性的对象
-
prop:要设置的属性的名称
-
descriptor:是一个对象,要定义或修改的属性描述符
数据描述符 -
configurable:可以设置属性能否被删除,默认是false
-
enumerable:可以设置属性能否遍历,默认是false
-
value:可以设置属性的值
-
writable: 可以设置属性值是否可写,默认是false
存取描述符 -
get:是一个函数,当获取属性值的时候会触发
-
set:是一个函数,当设置属性值的时候会触发
eg:给obj添加一个a属性,值是10
1.使用set和get
var obj = {
name: 'lucy',
age: 12
}
Object.defineProperty(obj, 'a', {
get() {
console.log('你在获取a属性的值')
return data; //这个函数的返回值就是获取的a属性的值
},
set(value) {
console.log('你在设置a属性的值')
data = value;
}
})
console.log(obj.a);//获取
obj.a = 20; //设置
console.log(obj.a) //获取
2.使用value和writable
var obj = {
name: 'lucy',
age: 12
}
Object.defineProperty(obj, 'a', {
value: 10, //设值
writable: true, //可修改
enumerable: true, //可遍历
configurable: true //可删除
})
Object.create
- 作用:创建一个新对象,可以指定新对象的__proto__
- 语法:Object.create(新对象的原型,对象本身的属性)
- 返回值:创建好的新对象
function Human() {
this.name = 'jack';
this.age = 18;
}
Human.prototype.sayHi = function () {
console.log('hello world')
}
var h = new Human();
//创建一个对象能够使用Human的属性和方法
var s = Object.create(h, {
sex: {
value: '女'
}
})
console.log(s)
in运算符
语法:属性名 in 对象
作用: 可以判断对象的属性是否存在,既可以判断`本身的`也可以判断`原型上的`
hasOwnProperty
作用:判断对象的属性是否存在,只能判断`对象本身的`
语法:对象. hasOwnProperty('属性名')
instanceof
作用: 判断一个对象是否是某个构造函数的实例
语法:对象 instanceof 构造函数
Object.assign
作用:es6语法里面的一个方法,可以用于对象的合并
语法:Object.assign(目标对象,要合并的对象)
Object.prototype.toString()
作用:精确判断数据类型
使用:Object.prototype.toString.call(要判断数据类型的变量)