Javascript:调用";公共变量;从「;“私人方法”;
当用户单击从我的一个类调用函数的按钮时,我需要调用一些私有变量 这是我的密码:-Javascript:调用";公共变量;从「;“私人方法”;,javascript,class,Javascript,Class,当用户单击从我的一个类调用函数的按钮时,我需要调用一些私有变量 这是我的密码:- class01 = new MyClass('Tom Marvolo Riddle'); function MyClass(name){ this.name = name; var draw = function(){ var newHTML ='<input type="button" value="hello" />'; $(".ctn").ap
class01 = new MyClass('Tom Marvolo Riddle');
function MyClass(name){
this.name = name;
var draw = function(){
var newHTML ='<input type="button" value="hello" />';
$(".ctn").append(function(){
return $(newHTML).click(hello);
});
}
var hello = function(){
alert ('hello, my name is '+this.name+'.')
}
draw();
}
class01=新MyClass('Tom Marvolo Riddle');
函数MyClass(名称){
this.name=名称;
var draw=function(){
var newHTML='';
$(“.ctn”).append(函数(){
返回$(newHTML)。单击(hello);
});
}
var hello=function(){
警报('你好,我的名字是'+this.name+'.'))
}
draw();
}
在hello
函数中,当调用该函数时,此
指的是单击的按钮,它将不具有我们存储的名称
属性。因此,我们在另一个变量中分配name
时捕获当前对象,如下所示
function MyClass(name){
var that = this;
that.name = name;
...
var hello = function(){
console.log ('hello, my name is ' + that.name + '.');
}
draw();
}
var class01 = new MyClass('Tom Marvolo Riddle');
由于引入了新的作用域,您失去了上下文。缓存
this
例如:var self=this
然后使用self
。或者,尝试var hello=function(){alert('hello,我的名字是“+this.name+”);}.bind(this)代码>-bind保留上下文。@BenjaminGruenbaum作为答案发布?我最喜欢@BenjaminGruenbaum的答案,它不需要声明任何变量。非常感谢。