这两个javascript函数之间有什么区别?
我想知道在以下情况下,内部fn和外部fn之间的区别是什么:这两个javascript函数之间有什么区别?,javascript,Javascript,我想知道在以下情况下,内部fn和外部fn之间的区别是什么: function Construct() { this.insideFn = function(obj){ .... } } Construct.prototype.outsideFn = function(obj){ ... } 使用哪一个是有效的?第一个函数构造(){}是一个类(在javascript中它是一个对象),而稍后您将使用关键字prototype继承(扩展)这个类,
function Construct()
{
this.insideFn = function(obj){
....
}
}
Construct.prototype.outsideFn = function(obj){
...
}
使用哪一个是有效的?第一个
函数构造(){}
是一个类(在javascript中它是一个对象),而稍后您将使用关键字prototype
继承(扩展)这个类,并在外部添加一个函数fn
。JavaScript中没有特定的类,因此您必须使用对象作为类。在第一种情况下,使用构造创建的每个实例都将有自己的insideFn
,如果使用多个实例,这将浪费内存。在第二种情况下,Construct
的每个实例将只引用外部fn
。因此后者更好。在第一个构造中,方法是构造的实例的属性。
在第二个构造中,该方法是来自construct
的prototype
对象的属性
如果在prototype
对象中定义函数,则调用时它们将是相同的。
prototype
变体通常可以节省内存并加快代码速度。
您还可以在对象实例中重载prototype
函数,以更改对象的默认行为
有关更好的英语和更多详细信息,请参见仅当存在多个实例时才浪费内存第一种情况也有好处:insideFn
将访问构造中声明的所有变量。通过这种方式,您可以模拟私有实例变量。-1:这是一个令人困惑的答案,因为它使用了不精确的术语(“类”、“继承”),虽然它在技术上提出了一些适用的观点,但它并没有解释这些观点的后果。