我有以下函数声明:
function Linker(linked_class, word_class, colors_count) {
var _linked_class = linked_class;
this.say = function() {
alert(_linked_class);
}
}
我想在函数中使用_linked_class
作为私有变量。我的问题是我是否需要在函数内部创建_linked_class
变量并分配通过参数列表传递的linked_class
变量的值,或者我可以使用通过参数传递的变量作为私有变量而不声明?如下所示:
function Linker(_linked_class, word_class, colors_count) {
this.say = function() {
alert(_linked_class);
}
}
答案 0 :(得分:0)
我想是的,你可以双管齐下。由于javascript在创建函数时保持函数上下文。所以在你的第二个例子中,_linked_class将是有效的值,每当"说"叫做。
答案 1 :(得分:0)
JavaScript中有两种流行的“隐私”方式。一个是通过闭包 - 构造函数参数属于构造函数闭包。在这种情况下,这些变量和函数将无法从函数外部访问。
另一种方法是将它们视为常规变量/方法。一开始的下划线不是语言机制,而是程序员用来表示隐私的惯例。例如:
function Linker(linked_class, word_class, colors_count) {
this.say = function() {
alert(linked_class);
// if you want to access a "conventionally private",
// (or any other method from the same class),
// you can do it like this:
this._whisper();
}
this._whisper = function() {
alert(linked_class);
}
this._pseudoPrivateVariable = 5;
}
下划线不常见。