Javascript 如何创建指向此的类范围指针?
我正在使用John Resig的简单JavaScript继承。 我知道我可以使用Javascript 如何创建指向此的类范围指针?,javascript,class,oop,this,Javascript,Class,Oop,This,我正在使用John Resig的简单JavaScript继承。 我知道我可以使用这个变量在方法之间共享值: var Person = Class.extend({ init: function(isDancing){ this.dancing = isDancing; } }); 我想创建一个指向此的指针,这样以后它就不会被覆盖,如: $('#id').click(function() { // this now points to selector }); 我怎样才能创
这个变量在方法之间共享值:
var Person = Class.extend({
init: function(isDancing){
this.dancing = isDancing;
}
});
我想创建一个指向此
的指针,这样以后它就不会被覆盖,如:
$('#id').click(function() {
// this now points to selector
});
我怎样才能创建一个类范围内可以访问的that=this
指针?this关键字总是指向它在其中实例化的环境。例如:
function Obj(name)
{
this.name = name;
}
var me = new Obj('myName');
var you = new Obj('yourName');
me.name将返回'myName',you.name将返回'yourName'
您只能在创建它的环境中指定指向它的指针,如果它在该环境中未引用任何内容,则它指向全局窗口。当您实例化一个init类型的对象时,“this”指针将指向isDancing。通过添加此方法,您可以做到这一点
addHandler: function() {
var self = this;
$('#id').click(function() {
// self now points to this
});
}
您可以使用“.apply()”
不确定您的意思是什么,或者该类将如何使用,但是jQuery使用bind
在回调中设置此
的正确值?这是一个很好的开始,但是self
只能在addHandler
方法中访问。如何在不在每个方法中定义的情况下实现类范围?我认为没有解决方案。这是否意味着没有创建新的作用域来保存简单JavaScript继承中的局部变量?局部变量是什么意思?在您的例子中,类成员?这就是闭包在JavaScript()中的工作方式。click
事件将在同一个类中,而不是在外部。我想定义类范围的变量,并在所有方法中访问它,甚至在任何类方法中的单击事件中访问它。
var Person = Class.extend({
init: function(isDancing){
this.dancing = isDancing;
},
setDancing = function(isDancing) {
this.dancing = isDancing;
}
});
var p = new Person();
$('#id').click(function() {
p.setDancing.call(p, NEWVALUE);
// 'this' will point to 'p' in the function 'p.setDancing'
});