声明JavaScript成员函数的最佳实践

Best practice for declaring JavaScript member function

本文关键字:最佳 函数 JavaScript 成员 声明      更新时间:2023-09-26

下面我有两个成员函数sayHello和sayHi,它们实际上做同样的事情:

function Person (n) {
	this.name = n;
	this.sayHello = function() {console.log("Hello, my name is "+this.name);};
};
Person.prototype.sayHi = function() {console.log("Hi, I'm "+this.name);};
Jeff = new Person('Jeff');
Joe = new Person('Joe');
Jeff.sayHello() // returns "Hello, my name is Jeff"
Joe.sayHi() /// returns "Hi, I'm Joe"
我认为实现明智,他们是相同的,但现在我开始认为将函数分配给原型只创建一个函数的图像,而'sayHello'在函数中声明,所以每次创建一个新的Person对象时都会创建一个新的图像?对吗?来自c++世界的我更喜欢将声明放在函数中,但如果这会导致臃肿,我不想这样做。

您是正确的,在Person构造函数内部声明函数sayHello将在每次调用该函数时创建一个新函数,因此它是浪费资源。然而,这并没有浪费任何大量的资源,如果这是一个问题,那么将会有几个其他更重要的问题,而不仅仅是一个函数被重新声明。

至于最佳实践,主要是风格。一般来说,您希望只使用原型进行扩展。