嘿,伙计们是javascript的新手,我真的很困惑使用关键字"这个"在javascript。
代码是
function TestObject() {
TestObject.prototype.firstMethod = function(){
this.callback();
YAHOO.util.Connect.asyncRequest(method, uri, callBack);
}
TestObject.prototype.callBack = function(o){
this.secondMethod();
}
TestObject.prototype.secondMethod = function() {
alert('test');
}
我知道这指的是全局对象..在这里我只需要知道这里有什么...这里的行为与testobject相同吗?如果没有请解释我。
任何帮助将不胜感激..谢谢
答案 0 :(得分:0)
javascript中的范围是一种痛苦,如果你来自纯粹的oo语言,它指的是实例/类。
在javascript中它是不同的,你必须将上下文传递给你的回调,以确保你将保留在你的实例/类范围内,如果使用jquery你可以这样做:
remplace:
YAHOO.util.Connect.asyncRequest(method, uri, callBack);
通过
YAHOO.util.Connect.asyncRequest( method, uri, jQuery.proxy(this.callBack, this) );
无法解释我在工作中的更多信息,但您可以在那里找到信息: 更多信息:
答案 1 :(得分:0)
您需要为我们提供更多代码,以便能够查看this
值的来源,特别是因为this
是对函数调用上下文的引用,所以如果您不显示我们在你调用这些功能的地方,我们将无法告诉你你会得到什么。以下是this
的解释:
这是指函数的执行上下文,它可以采用4种类型的值,具体取决于您调用函数的方式。
全局调用:该函数作为全局函数调用
function global () {
return this;
}
global(); // Global object
方法调用:该函数作为对象的方法调用
myobject.method = function () {
return this;
}
myobject.method(); // returns myobject
通过new
运算符调用构造函数:该函数作为构造函数调用,其值为构造对象beign,将由构造函数funciton自动创建和返回的对象。这仅在使用new
运算符调用函数时应用,并且它不是在Javascript中创建对象的唯一方法。
function Constructor () {
this.bla = true;
}
new Constructor(); // returns a new object, which has a property "bla" with the value true
使用调用和应用函数方法:调用和应用允许您设置将被调用的函数的this
值。
myobject = {
bla = true,
method = function () {
return this;
}
};
function setMe () {
return this;
}
setMe.call(myobject); // returns myobject
myobject.method.apply(window); // returns window, the global object