我想知道在以下情况下,insideFn和outsideFn之间有什么区别:
function Construct()
{
this.insideFn = function(obj){
....
}
}
Construct.prototype.outsideFn = function(obj){
...
}
哪种更有效?
我想知道在以下情况下,insideFn和outsideFn之间有什么区别:
function Construct()
{
this.insideFn = function(obj){
....
}
}
Construct.prototype.outsideFn = function(obj){
...
}
Construct
创建的每个实例都将拥有自己的insideFn
,如果您使用多个实例,则会浪费内存。在第二种情况下,Construct
的每个实例只会有一个对outsideFn
的引用。因此,后者更好。在第一个结构中,该方法是Construct
实例的属性。
在第二个结构中,该方法是来自Construct
的prototype
对象的属性。
如果您在prototype
对象内部定义函数,则在调用时它们将相同。
prototype
变体通常可以节省内存并加快代码速度。
您还可以在对象实例中重载prototype
函数,以更改对象的默认行为。
有关更好的英语和更多详细信息,请参见http://www.javascriptenlightenment.com/
第一个 function Construct() {}
是一个类(在JavaScript中它是一个对象),而后面你使用关键字prototype
继承(扩展)这个类,并添加了另一个函数outsideFn
。在JavaScript中没有特定的类,因此必须将对象用作类。
insideFn
将可以访问在Construct
中声明的所有变量。这样,您就可以模拟私有实例变量。 - Raphael Schweikert