我创建了一个类var Emp = function() { };
,然后在类的原型中将函数定义为
Emp.prototype.function1 = function() { /* some definition */ };
Emp.prototype.function2 = function() { /* some definition */ };
// .. so on
对绩效有什么影响,哪种方法有效?为什么?
案例1:如果我调用函数
Emp.prototype.function1();
案例2:如果我首先创建Emp
实例
var empobj = new Emp();
empobj.function1(); // function calling
答案 0 :(得分:1)
如果您使用案例1,则默认情况下this
上下文将指向prototype
对象,因此使用该值无法访问instance
值。
例如:
var x = function(){ this.a = 10 };
x.prototype.y = function(){ console.log(this.a) };
x.prototype.y(); // This will print undefined since
//there is no properties other than y in the prototype of x.
在案例2的同时,您可以访问prototype
对象以及instances
值。该示例代码为
var x = function(){ this.a = 10 };
x.prototype.y = function(){ console.log(this.a) };
var obj = new x();
obj.y(); // `y` can be accessed also. And it will output 10.
答案 1 :(得分:1)
如果没有在实例上调用方法,它们应该是静态的,即在Emp
而不是在Emp.prototype
中定义:
function Emp() { /* ... */ }
Emp.function1 = function() { /* ... */ };
或者使用ES6课程:
class Emp {
static function1() { /* ... */ }
}
然后调用这个函数:
Emp.function1(/* arguments */);