JavaScript创建对象方式研究

以下内容是跟随《JavaScript高级程序设计》(第二版)这本书的第6.1章节上机实践所得。

 

 

构造函数模式:

  缺点:每创建一个对象都会新创建一个sayName对象,例如:

  创建的对象都有一个constructor属性。但是,如果要检测对象类型,使用instanceof操作符会更可靠些:

  之所以同时是Object实例,是因为所有对象均继承自Object。

 

  对象属性可以覆盖掉原型的同名属性:

  每一个函数都有一个prototype属性,该属性是一个对象,可以让所有对象共享它所包含的属性和方法。

  可以用hasOwnProperty()方法判断一个属性是存在于实例中,还是原型中。只有给定属性是存在于实例中,才会返回true:

  使用in操作符,只要通过实例可以访问给定属性,则返回true,无论该属性存在于实例中还是原型中。

 

  使用最广泛、认同度最高的一种创建自定义类型的方法:组合使用构造函数模式和原型模式。

  重写prototype的操作要在创建实例之前执行,因为每个对象在创建后,里面会自动建立一个__proto__属性,指向该对象的原型对象。如果修改了prototype对象,该属性并不会自动同步更改。

  动态原型模式:把所有信息都封装在构造函数中,而不用在调用构造函数后又初始化原型。

  判断原型是否初始化时,尽管原型可能会有很多的共享方法和属性,但只需要判断一个是否存在就可以了。另外,这里不能使用对象字面量重写原型,像上述所说的,这样会切断现有实例与新原型之间的联系。

  调用方式如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值