1. 声明对象的两种语法
示例:
let obj = {'name': 'frank', 'age': 18}
let obj = new Object({'name': 'frank', 'age': 18})
// 一般使用第一种
2. 如何删除对象的属性
delete命令用于删除对象的属性,删除成功后返回true。
delete obj.xxx 或者delete obj['xxx'] 这俩种都可以删除对象属性。
-
下面代码中,delete命令删除对象obj的p属性。删除后,再读取p属性就会返回undefined,而且Object.keys方法的返回值也不再包括该属性。
var obj = { p: 1 }; Object.keys(obj) // ["p"] delete obj.p // true obj.p // undefined Object.keys(obj) // []
3. 如何查看对象的属性
- 查看一个对象本身的所有属性,可以使用Object.keys方法。
var obj = { key1: 1, key2: 2 }; Object.keys(obj); // ['key1', 'key2']
4. 如何修改或增加对象的属性
-
修改自身属性,直接赋值,如下代码:
let obj = {name: 'frank'} obj.name; //"frank" let key = 'name' obj[key] === 'frank' //true
-
批量赋值,如下代码:
Object.assign(obj, {color: 'red', age: 18})
-
修改共有属性
Object.prototype['toString']='xxx' // obj.__proto__['toString']='xxx' //不推荐这种
-
改原型
let obj = Object.create(common) // obj.__proto__=common //不推荐这种
-
增加属性
基本和改一样,已有属性则改,没有属性就增加;
5. 'name' in obj和obj.hasOwnProperty('name') 的区别
- 他们俩个都是判断属性名是否存在在对象里
- 区别是in会继承原型链上的属性,而obj.hasOwnPropert不会继承原型链中的属性。