我想知道在以下情况下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
。在第二个构造中,方法是prototype
对象的属性Construct
如果在prototype
对象内部定义函数,调用时它们将是相同的。该prototype
变体通常可以节省内存并加快代码速度。您还可以重载prototype
对象实例中的函数,以更改对象的默认行为。
要获得更好的英语和更多详细信息,请参阅http://www.javascriptenlightenment.com/
第一个function Construct() {}
是一个类(在 javascript 中它是一个对象),而稍后您将使用关键字继承(扩展)这个类prototype
并添加一个更多功能outsideFn
。JavaScript 中没有特定的类,因此您必须将对象用作类。