function() {
var name;
this.set = function(name) {
this.name = name; <-- this
}
}
我该如何编写该行,以便可以将该参数分配给私有变量?与Java不同,“this”也指向一个函数,所以我无法弄清楚。Javascript私有变量和参数具有相同的名称
function() {
var name;
this.set = function(name) {
this.name = name; <-- this
}
}
我该如何编写该行,以便可以将该参数分配给私有变量?与Java不同,“this”也指向一个函数,所以我无法弄清楚。Javascript私有变量和参数具有相同的名称
函数内部集合,内部name
变量将获得比外部变量name
更多的优先级变量。为了给外部变量赋值,你必须在内部或外部使用不同的名字。 然而,你可以不喜欢,
function() {
this.name = '';
this.set = function(name) {
this.name = name; <-- this
}
}
这不分配新的值给私有变量,这是分配的值对象的属性。
我更喜欢这个答案,因为我可以保留名称,它最好地描述变量,同时显示不同的所有者。 – Sgene9
什么?这个答案没有道理!你永远不会初始化第2行声明的变量'name'。此外,你的'self'变量与'this'相同。与OP提供的代码有什么不同? –
正确@AaditMShah,这会更有意义 'function(){ this.name =''; this.set = function(name){ this.name = name; < - 这个 } }' –
您只需要为参数使用不同的名称,因此它不会影响函数set
之外的私有变量name
,就这些了。
var SomeClass = function() {
var name;
this.set = function(otherName) { // argument should have a diffirent name so it won't shadow the other variable "name"
name = otherName;
}
this.get = function() {
return name;
}
};
var ins = new SomeClass();
ins.set("Jim Carrey"); // OK
console.log(ins.get()); // OK
console.log(ins.name); // undefined as expected
这是正确的答案,应该接受。 –
'this'不指向一个功能。您提供了一个不完整且无效的代码示例,因此很难确切知道您需要什么,但是一个问题是'name'参数隐藏了'name'变量。另一个是你没有设置变量;你在'this'引用的某个对象上设置一个属性。 – 2017-04-05 11:53:36
您是否将外部函数用作类? –