你的位置:首页 > Java教程

[Java教程]深入理解Javascript中构造函数和原型对象的区别


 

 

  在 Javascript中prototype属性的详解 这篇文章中,详细介绍了构造函数的缺点以及原型(prototype),原型链(prototype chain),构造函数(constructor),instanceof运算符的一些特点。如果对prototype和构造函数不熟悉,可以前往Javascript中prototype属性的详解 和 Javascript 中构造函数与new命令的密切关系 仔细的品味品味。先来做一个简单的回顾。

  首先,我们知道,构造函数是生成对象的模板,一个构造函数可以生成多个对象,每个对象都有相同的结构。构造函数的缺点就是,每当你实例化两个对象时,需要调用两次构造函数的某一个方法,这带来的坏处就是占用内存,而且没必要。

  其次,为了解决构造函数的属性和方法无法被对象实例所共享的问题,我们可以把需要共享的属性和方法放在原型(prototype)对象上。原型对象上的所有属性和方法,都会被对象实例所共享。对于构造函数来说,prototype是作为构造函数的属性;对于对象实例来说,prototype是对象实例的原型对象。所以prototype即是属性,又是对象。

  然后,除了undefined和null之外,每一个数据类型都可以看成一个对象,每一个对象都有它的原型。所有一切对象的原型顶端,都是Object.prototype,即Object构造函数的prototype属性指向的那个对象。当然,Object.prototype对象也有自己的原型对象,那就是没有任何属性和方法的null对象,而null对象没有自己的原型。

  原型链的特点有:

  a:读取对象的某个属性时,JavaScript引擎先寻找对象本身的属性,如果找不到,就到它的原型去找,如果还是找不到,就到原型的原型去找。如果直到最顶层的Object.prototype还是找不到,则返回undefined

  b:如果对象自身和它的原型,都定义了一个同名属性,那么优先读取对象自身的属性,这叫做“覆盖”(overiding)。

  c:一级级向上在原型链寻找某个属性,对性能是有影响的。所寻找的属性在越上层的原型对象,对性能的影响越大。如果寻找某个不存在的属性,将会遍历整个原型链。

  再次,constructor属性是原型对象上的一个属性,可以被所有实例对象所共享。要注意的是,prototype是构造函数的属性,而constructor则是构造函数的prototype属性所指向的那个对象,也就是原型对象的属性。由于constructor属性是一种原型对象和构造函数的关系,所以在修改原型对象的时候,一定要注意constructor的指向问题。

  最后,instanceof运算符返回一个布尔值,用于判断对象是否为某个构造函数的实例。

 

 

  在接下来的分享中,会谈谈Object的部分方法和Object.prototoype的部分方法。虽然都是概念性问题,但是如果理解了这些概念,对于MVVM框架和各种js框架的理解都有相当大的帮助。

  以下的分享会分为如下内容:

  1.Object和Object.prototype的区别

  2.Object.getPrototypeOf()

  3.Object.setPrototypeOf()

  4.Object.create()

  5.Object.prototype.isPrototypeOf()

  6.Object.prototype.__proto__

 

 

1.Object和Object.prototype的区别

  个人认为,要学好javascript的其中一个方法就是,必须理解每一个" . "所代表的意思是什么,是调用自身的属性和方法呢,还是继承原型的对象的属性和方法。来看看Object构造函数和构造函数的原型Object.prototype都有哪些属性和方法。

  Object是构造函数,而Object.prototype是构造函数的原型对象。构造函数自身的属性和方法无法被共享,而原型对象的属性和方法可以被所有实例对象所共享。

Object的属性和方法:

Object.prototype的属性和方法:

到美国旅游团购去美国旅游攻略美国六日游行程安排参考去美国旅游跟团行程美国旅游护照签证广州中山纪念堂门票包含讲解费吗?中山纪念堂讲解费多少钱? 中山纪念堂开放时间?广州中山纪念堂开门时间? 广州中山纪念堂开门时间?中山纪念堂几点开门? 广州中山纪念堂简介?中山纪念堂介绍? 马拉湾海浪浴场怎么样?黄河谷马拉湾海浪浴场好玩吗? 郑州马拉湾好玩吗?马拉湾有什么好玩的? 马拉湾水上乐园好玩么?郑州马拉湾水上乐园怎么样? 马拉湾有什么好玩的?郑州马拉湾怎么样? 龙脊梯田徒步旅行注意事项 北京八达岭野生动物园 漓江游船贴士 桂林两江国际机场大巴到市区时刻表 普吉岛节庆 马尔代夫报价费用分析 澳洲暖冬旅游 春节放鞭炮注意事项 Q65110A1857 Datasheet Q65110A1857 Datasheet Q65110A1858 Datasheet Q65110A1858 Datasheet Q65110A1862 Datasheet Q65110A1862 Datasheet 国内适合冬天旅游的地方 国内适合冬天旅游的地方 国内适合冬天旅游的地方 东北冬天旅游攻略 东北冬天旅游攻略 东北冬天旅游攻略 12月份适合去哪里旅游国内 12月份适合去哪里旅游国内 12月份适合去哪里旅游国内