我正在写一个小手机游戏库,我不确定声明实例化函数对象的成员函数的最佳做法。的功能不JS成员函数的最佳实践
function Foo(id){
this.id = id;
this.print = function(){
console.log(this.id);
};
};
然而,这并不需要访问“私人”的成员函数:
举例来说,我可能会创建一个简单的对象有一个属性,一个方法来打印需要在函数中声明。我同样可以采写:
function print(){
console.log(this.id);
};
function Foo(id){
this.id = id;
this.print = print;
};
当该功能是通过富的一个实例调用,该实例成为this
的背景下,这样的输出是在两种情况下是相同的。
我不完全确定如何分配内存与JS,我找不到任何我可以理解的具体事情,但在我看来,与第一个例子所有成员的Foo,包括打印函数在每次实例化时都会被复制 - 但是第二个函数只会获得一个指向预先声明的函数的指针,这会在创建更多Foo实例时节省更多内存。
我是否正确,如果我有这样做,是否有任何内存/性能好处?
如果你不需要访问私有变量,最好的做法是将成员函数添加到原型。 – jfriend00
希望JS编译器可以告诉第一个函数不引用任何闭包变量,因此它可以为所有实例重用相同的函数。 – Barmar