JS 对象基本用法

1.声明对象的两种语法

在JavaScript当中创建一个对象有两种语法:
一种是通过字面量的形式,另外一种是通过new Object()的形式。
例如:创建一个person对象,它有 name,age,sex等属性。

1.1 字面量形式(literal syntax)
var person = {name:"chen",age:12,sex:"male"};
1.2 new Object()形式
var person = new Object();
person.name="test";
person.age=12;
person.sex="male";1234

在JavaScript中,使用new关键字后,意味着做了如下四件事情:

a.创建一个新的对象,这个对象的类型是object。
b.设置这个新的对象的内部、可访问性和[[prototype]]属性为构造函数(指prototype.construtor所指向的构造函数)中设置的。
c.执行构造函数,当this关键字被提及的时候,使用新创建的对象的属性。
d.返回新创建的对象(除非构造方法中返回的是‘无原型’)。
1.3 两种方式比较

{}叫做对象字面量,new Object()则是使用构造器函数。
对象字面量的声明方式比构造器函数更加方便。
所以在JS中建议以对象字面量的声明方式优先。

2.如何删除对象的属性

按照下述操作即可删除 obj 的 xxx 属性

delete obj.xxx
delete obj[‘xxx’]

3.如何查看对象的属性

查看自身所有属性

Object.keys(obj)

查看自身+共有属性

console.dir(obj)
或者自己依次用 Object.keys 打印出 obj.__proto__

总结如下:

Object.keys(obj)
console.dir(obj)
obj['name']
obj.name // 记住这里的 name 是字符串
obj[name]  // 记住这里的 name 是变量

4.如何修改或增加对象的属性

4.1 修改属性
改自身 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__ 代码都是强烈不推荐写的
4.2 增加属性

基本与4.1修改属性内容相同,对于已有属性进行改,没有属性则增。

5.‘name’ in obj和obj.hasOwnProperty(‘name’) 的区别

使用in判断对象中是否由属性时,若自身没有,在原型中找到也是返回true:

console.log("name" in p1);

使用hasOwnproperty()判断对象是否含有属性时,只有自身有才会返回true:

console.log(p1.hasOwnProperty("name"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值