声明对象的两种语法
1.1 通过new关键字创建对象
var obj = new Object();
// 添加属性
obj.name = "小明";
// 添加方法
obj.sleep = function () {
console.log(this.name + "在睡觉");
};
1.2通过字面量创建对象
var obj = {
name : "xiaoming",
age : "18",
show : function (girlfriend) {
console.log(this.name + "的女朋友是" + girlfriend);
}
};
如何删除对象的属性
// 使用delete 关键字删除 会删除对象的键值对
let newObj = {
cc: 'cc';
};
delete newObj.cc;
//重新赋值
newObj.cc = undefined;
如何查看对象的属性
const dayObj = {
monday: '周一'
}
console.dir(dayObj) // 可以查看对象上完整的属性 包括原型
console.log(Object.keys(dayObj)) // 查看对象的键, 返回值是一个list
console.log(Object.values(dayObj)) // 查看对象每个键的之, 返回值是一个list
如何修改或增加对象的属性
const dayObj = {
monday: '周一';
}
dayObj.tesday = '周二'; // 给对象添加一个属性
dayObj.monday = '星期一; // 如果对象上有要添加的属性就覆盖之前的属性值
'name' in obj和obj.hasOwnProperty('name') 的区别
hasOwnPropert方法
判断一个属性是自身的还是共有的obj.hasOwnProperty('toString')
const object1 = {};
object1.property1 = 42;
console.log(object1.hasOwnProperty('property1'));
// expected output: true
console.log(object1.hasOwnProperty('toString'));
// expected output: false
console.log(object1.hasOwnProperty('hasOwnProperty'));
// expected output: false
object in
指定的属性在指定的对象或其原型链中,则
in运算符返回true。
const car = { make: 'Honda', model: 'Accord', year: 1998 };
console.log('make' in car);
// expected output: true
delete car.make;
if ('make' in car === false) {
car.make = 'Suzuki';
}
console.log(car.make);
// expected output: "Suzuki"