2015-01-07 35 views
-1

我们从下面给出的方法中获得相同的结果。但是哪种方法更有效,哪种方法占用内存空间更少。将方法直接添加到构造函数中,通过javascript中的原型添加方法

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

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

可能的重复[我应该使用原型吗?](http://stackoverflow.com/questions/4691044/should-i-use-prototype-or-not) – Dieterg

+2

他们使用大约相同数量的RAM天。第二种是头发更快实例化,而第一种方法的解析速度稍快。略微,并且很少像编码方便性或可读性那么重要。 – dandavis

回答

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”函数的实例。

相关问题