1. 声明对象的两种语法
一、字面量声明
var obj = {
属性名1 : 属性值,
属性名2 : 属性值,
方法名1 : function() {
.....
}
}
通过obj.属性名或obj.方法名()就可以读取或调用对象的属性/方法了。
二、用new操作符构造Object对象
var obj = new Object();
obj.属性名1 = 属性值1;
obj.属性名2 = 属性值2;
obj.方法名1 = function() {
....
};
....
首先用new Object()创建一个空对象,然后用多条语句给对象添加属性/方法。
2.如何删除对象的属性
删除属性
Delete运算符只能删除自有属性,不能删除继承属性。要删除继承属性必须从定义这个属性的原型对象上删除,而且这会影响到所有继承自这个原型的对象。 Delete运算符用来删除对象属性,如果删除成功或所删除的项目不存在,delete将返回 true。
(4)注意,并不是所有的属性都可以删除,一些内置核心和客户端属性是不能删除的,通过var语句声明的变量不能删除,通过function语句定义的函数也是不能删除的。
3.如何查看对象的属性
首先先创建一个对象
let obj = {
'name': '余小鱼',
'age':23,
eat:function (){
console.log('会吃饭');
}
}
下面展示了obj的数据结构
Object.keys/values/entries
这三个方法都是用来获取对象上的属性集合的。 Object.keys 是用来获取属性名集合, Object.values 是用来获取属性值集合, Object.entries 则是用来获取属性键-值对集合的。
Object.keys(obj) //['name', 'age', 'eat']
Object.values(obj) //['余小鱼', 23, ƒ]
Object.entries(obj)//[[Array(2), Array(2), Array(2)] ['name', '余小鱼'] ['age', 23] ['eat', ƒ]]
4.如何修改或增加对象的属性
修改
- 改自身 obj['name'] = 'jack'
- 批量改自身 Object.assign(obj, {age:18, ...})
- 改共有属性 obj.proto[‘toString'] = 'xxx'
- 改共有属性 Object.prototype['toString'] = 'xxx'
- 改原型 obj.proto = common
- 改原型 let obj = Object.create(common)
- 注:所有 proto 代码都是强烈不推荐写的
增加
基本同上:已有属性则改;没有属性则增.
5.’name’ in obj 和 obj.hasOwnProperty(‘name’)的区别
in操作符只要通过对象能访问到属性就返回true。 hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)
鄙人学习总结,如有发现错误麻烦指正.