EXT JS 内核剖析一,Javascript基础_小胜靠智,大胜靠德。_百度空间
通过定义一个含有this的特殊的函数,来初始化一个对象的属性,这个函数被称为constructor—构造函数,通常也把这个函数的定义看做是类定义。按Javascript的规范,这样的函数通常用名词来命名,表示一种类型,如本文中的例子Rectangle。我们知道Javascript中的函数,其实也是对象,这点通过 Rectangle instanceof Object == true可以证明。所以如前面提到的,Javascript的类机制实际上是用对象来实现的。
不过这样调用写法是很麻烦的,我们可以直接rect1.area()来调用。Javascript内置了属性和方法的查找机制,首先看rect1对象本身是否有area方法,这里是没有的,然后Javascript会看这个对象的constructor.prototype对象是否有这个area方法,于是找到了方法定义,就可以执行调用了,如果在这个对象的constructor.prototype中没有,Javascript会看constructor.prototype是否还有constructor.prototype属性,如果有的话,会继续这样的查找,直到找到,或者达到Object.prototype,这就是所谓的prototype chain
     为什么呢?问题出在这里ColoredRectangle.prototype = Rectangle.prototype,这行代码将父类的prototype赋值给子类了,也就是说子类和父类的prototype指向了同一个对象,所以子类增加方法,父类也就有了。还记得前面说的prototype.constructor.prototype吧,我们可以再子类和父类的prototype中间在加一个对象,这样就实现了父类和子类prototype的分离了。


郑重声明:资讯 【EXT JS 内核剖析一,Javascript基础_小胜靠智,大胜靠德。_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——