直接在构造函数中添加方法vs在javascript中通过原型添加方法

时间:2015-01-07 11:06:32

标签: javascript

我们从下面给出的方法得到相同的结果。但是哪种方式更有效,哪种方式占用的内存更少。

function a(){
this.addclass= function(){
//do something
}
}

function a(){}
a.prototype.addclass= function(){
//do something
}

1 个答案:

答案 0 :(得分:1)

我认为,考虑到继承的情况,你建议的两种方式都有不同的行为,这在下面的代码部分是显而易见的:

通过addclass

定义prototype方法
function a() {
   a.prototype.addclass= function() {
      alert('a');
   };
}

a();

function b() {}

b.prototype = Object.create(a);
var o = new b();
o.prototype.addclass();

使用addclass

定义this方法
function a() {
   this.addclass= function(){
      alert('a');
   };
}

a();

function b() {}

b.prototype = Object.create(a);
var o = new b();
o.prototype.addclass();

通过原型(第一个)可以访问其父级的addclass方法,而通过此方式(第二个),addclass的访问权限特定于' a&#39 ;功能。