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 }); 我怎样才能创

我正在使用John Resig的简单JavaScript继承。 我知道我可以使用
这个
变量在方法之间共享值:

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'
});