我想知道以下情况中 insideFn 和 outsideFn 之间有什么区别:
function Construct()
{
this.insideFn = function(obj){
....
}
}
Construct.prototype.outsideFn = function(obj){
...
}
哪一个有效使用?
答案 0 :(得分:5)
在第一种情况下,使用Construct
创建的每个实例都有自己的insideFn
,这将浪费内存,以防您使用多个实例。在第二种情况下,Construct
的每个实例都只有outsideFn
的引用。所以后者更好。
答案 1 :(得分:0)
在第一个构造中,该方法是Construct
实例的属性。
在第二个构造中,该方法是来自prototype
Construct
对象的属性
如果在prototype
对象中定义函数,它们在调用时将是相同的。
prototype
变体通常可以节省内存并加快代码速度。
您还可以重载对象实例中的prototype
函数,以更改对象的默认行为。
有关更好的英语和更多详情,请参阅http://www.javascriptenlightenment.com/
答案 2 :(得分:-1)
第一个function Construct() {}
是一个类(在javascript中它是一个对象),后来你使用关键字prototype
继承(扩展)这个类并再添加一个函数{{1} }。 JavaScript中没有特定的类,因此您必须将对象用作类。