我正在编写一个小型手机游戏库,我不确定声明实例化函数对象的成员函数的最佳实践。
例如,我可能会创建一个具有一个属性的简单对象,以及一个打印它的方法:
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;
};
当通过 Foo 的实例调用该函数时,该实例成为 的上下文this
,因此在任何一种情况下输出都是相同的。
我不完全确定 JS 是如何分配内存的,我找不到任何我能理解的关于这个特定的东西,但在我看来,对于第一个例子,Foo 的所有成员,包括 print 函数,都是每次实例化时都会重复 - 但第二次,它只是获得一个指向一个预先声明的函数的指针,这将节省更多的内存,因为创建了更多的 Foo 实例。
我是否正确,如果正确,这样做是否有任何内存/性能优势?