《Javascript权威指南(第六版)》重点笔记 —— Javascript的对象

本文是《JavaScript权威指南(第六版)》中关于JavaScript对象的重点笔记,涵盖了对象直接量、使用new操作符创建对象以及通过Object.create()方法创建对象的详细阐述。
摘要由CSDN通过智能技术生成

对象直接量:

	使用对象直接量的方式创建对象是非常直观的。对象直接量如果被重复调用,会创建许多对象,如下:
function createObj() {

    var o = {
       x: 1
    };
    return o;
}

var o1 = createObj();
var o2 = createObj();

console.log(o1 == o2);
console.log(o1 === o2);
false
false
	由此可见,重复调用对象直接量的代码会创建多个不同的对象。

new:

	除了上面提到的通过对象直接量的方式创建对象以外,还可以通过new + function的形式来创建对象,例如:new Array();、new Date();等。
	这里的Array和Date就是function,这样的function称作构造函数。
	一般情况下,通过new创建的对象继承其构造函数的prototype对象的属性,故new Array 继承自Array.prototype,new Date 继承自Date.prototype(关于原型的更详细的内容将在后面介绍)。

Object.create():

	Object.create()的功能类似于new,不同之处在于Object.create()方法可以自己指定需要继承的原型对象。如:
var o = {};
var o1 = Object.create(Object.prototype);
console.log(o == o1);
console.log(o === o1);
false
false
	这里字面量创建的空对象{}实际上等同于Object.create(Object.prototype)。
      另外,Object.create()还可以给对象添加属性描述(Object.definePropery是为已存在的对象添加属性描述),就我个人理解,就是给对象添加一些属性以限制对象的行为(Object.create略):
var o = {};
Object.defineProperty(o, 'name', {
    writable: true,
    enumerable: false,
    configurable: true,
    value: 'hello'
});

console.log(o.name);
console.log(Object.keys(o));
hello
[contain: function]
      如果将enumerable改为true,这里结果将包含name属性,由此可见enumerable控制了属性的可枚举性。
      同理,writable控制属性的可写性。而configurable控制属性的可配置性,也就是说如果将configurable配置为false,那么之后不能再使用Object.defineProperty或Object.defineProperties修改已有属性了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值