为了账号安全,请及时绑定邮箱和手机立即绑定

在构造函数中声明javascript对象方法与在Prototype中声明

在构造函数中声明javascript对象方法与在Prototype中声明

慕姐8265434 2019-07-26 17:14:57
在构造函数中声明javascript对象方法与在Prototype中声明在创建javascript对象时,我可以将方法声明放入构造函数或原型中。例如,假设我想要一个具有name属性和Bark方法的Dog类。我可以将Bark方法的声明放入构造函数中:var Dog = function(name) {     this.Name = name;     this.Bark = function() {         alert(this.Name + " bark");     };}或者我可以把它作为原型对象的一种方法:var Dog = function(name) {     this.Name = name;}Dog.prototype.Bark = function() {     alert(this.Name + " bark");};当我实例化Dog类型的对象时,这两种方法似乎都很好:var dog = new Dog("Fido");dog.Bark();  //Both approaches show "Fido bark"我应该更喜欢这些方法中的一种而不是另一种吗?使用一种比另一种更有好处吗?在幕后,这两种方法最终会做完全相同的事情吗?大多数人倾向于采用哪种方法?谢谢你的帮助。
查看完整描述

3 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

两者是不同的:第一个将存储对该方法的引用。在原型对象上,而第二个解决方案则将方法存储在物体的。这意味着每个对象将包含一个额外的指针,因此每个对象占用更多的内存。

每个对象方法允许该方法引用构造函数中的变量(闭包),因此它允许您访问一些无法从原型方法访问的数据。

最后,一个原型方法可以后来变了,那就是你可以重新定义Bark在运行时,对Prototype对象进行此更改,此更改将适用于该原型的所有对象(因为方法总是通过原型查找)。

 


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 420 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信