如果我在一个类中使用某些私有函数,某些命名约定会产生更好的性能或提供不同的功能......还是仅仅是一个偏好问题?
var MyClass = function() {
var private1 = function(msg){
// Do stuff.
console.log(msg);
};
this.private2 = function(msg) {
// Do stuff.
console.log(msg);
};
};
答案 0 :(得分:2)
您的两个变量具有非常不同的访问权限,因此使用哪个变量取决于您要提供的访问类型,而不仅仅是编码样式首选项。
在您的示例中,private1
是构造函数的局部变量,仅对构造函数内的代码可用。它不适用于构造函数之外的任何代码。它实际上是私人的。
var yourObj = new MyClass();
yourObj.private1(); // undefined, will not work
private2
是您使用MyClass
运算符创建的new
对象的实例变量,可由任何代码yourObj.private2()
访问。它不以任何方式私有 - 它是一种可公开访问的方法。例如:
var yourObj = new MyClass();
yourObj.private2(); // works
因此private1
是私有的,private2
是公开的。应该选择与代码的期望目标匹配的实现方法。这不仅仅是一种编码风格偏好。
答案 1 :(得分:1)
private1是构造函数MyClass中的函数,private2是MyClass实例的函数:
var cl = new MyClass();
console.log(cl.private1); // undefined
console.log(cl.private2); // function