![]() |
1
81
这两个块的不同之处在于第一个示例中
这个
javascript中的继承与
|
![]() |
2
139
添加到 Norbert Hartl's answer 不需要supercar.prototype.constructor,但有些人将其用作获取对象构造函数(本例中为supercar对象)的方便方法。 仅从第一个示例开始,car.call(this,name)在supercar构造函数函数中,因为执行此操作时:
这就是JavaScript所做的:
注意到javascript并没有为您调用car。原型机和它们一样,任何你没有为超级跑车设置的属性或方法都会在车内被查找。有时这是好的,例如超级跑车没有驱动方法,但它可以共享汽车的一个,所以所有超级跑车将使用相同的驱动方法。有时你不想分享,就像每个超级跑车都有自己的名字。那么,如何将每个超级跑车的名称设置为它自己的东西呢?可以在supercar构造函数函数内设置此.name:
这行,不过等一下。我们在汽车制造厂做的不是完全一样吗?不想重复我们自己。既然汽车已经定了名字,我们就叫它吧。
哎呀,你可不想换这个特别的
两件事。一:意义
作为函数,可以使用函数的
call method
从而改变了
包裹起来,
一旦你理解了原型就不可怕了,但是它们与经典的类/继承OOP模型一点也不相似。我写了一篇关于 the prototypes concept in JavaScript . 它是为一个使用javascript的游戏引擎而编写的,但它与firefox使用的javascript引擎是相同的,所以它应该都是相关的。希望这有帮助。 |
![]() |
3
8
诺伯特,你应该注意到你的第一个例子几乎就是道格拉斯·克罗克福德所说的伪经典继承。需要注意的事项:
最后,我想说的是,我有几个在这里工作的TDD JavaScript继承代码示例: TDD JavaScript Inheritance Code and Essay 我很想得到你的反馈,因为我希望改进它并保持开源。其目标是帮助经典程序员快速掌握JavaScript,同时补充Crockford和Zakas的书。 |
![]() |
4
1
我不是100%确定,但我相信区别在于第二个示例只是将汽车类的内容复制到超级跑车对象中,而第一个示例将超级跑车原型链接到汽车类中,因此对汽车类的运行时更改也会影响超级跑车类。 |
![]() |
5
1
为函数abc创建的原型方法和属性
为函数abc创建新实例
http://astutejs.blogspot.in/2015/10/javascript-prototype-is-easy.html |
![]() |
6
0
这里有几个问题:
第一个只创建一个
以下是在执行第一个或第二个块时产生不同结果的代码:
最好在原型上定义方法,因为:
这个
只要你不重新分配给
但是如果您将另一个对象重新分配给
如果你不这样做
打电话没用
时代变了
在Javascript的现代版本中,您可以使用
今天,您还可以使用
注意你甚至不必提及
|
![]() |
Iiridayn · 如何在JS中为子对象属性访问调用thunk? 8 年前 |
![]() |
bamboopanda · “此”在单击时更改值 8 年前 |
![]() |
arachide · 受不同影响的原型属性 9 年前 |
![]() |
RoZaR · Javascript中的复杂对象 11 年前 |
![]() |
Polyov · Canvas游戏中的对象原型不起作用 12 年前 |