![](/img/trans.png)
[英]Set an object property to the negative value of a property in the same object (Javascript/jQuery)
[英]Property Object Javascript is not set with Jquery Deferred
我有以下代码:
function cBase() {
}
function Setting() {
this.myvar='';
}
Setting.prototype = new cBase();
Setting.prototype.setVal=function() {
var deferred=$.Deferred();
setTimeout(function(){
this.myvar='my value';
console.log('value '+this.myvar);
deferred.resolve();
},2000);
return deferred.promise();
};
var oset=new Setting();
oset.setVal().done(function(){
console.log('all done '+oset.myvar);
});
物业myvar
被预先设定值为"my value"
,但是当我使用对象oset
和呼叫方法setVal()
物业myvar
是空的? 为什么会这样?
值this
不会是里面的对象setTimeout()
回调。 您将需要使用.bind()
来确保this
是您想要的,或者您需要另一个变量来保存它。
Setting.prototype.setVal=function() {
var deferred=$.Deferred();
var self = this;
setTimeout(function(){
self.myvar='my value';
console.log('value '+self.myvar);
deferred.resolve();
},2000);
return deferred.promise();
};
请记住, this
是由函数的调用者根据谁来确定的。 对于setTimeout()
调用其回调函数时所执行的常规函数调用, this
函数设置为全局对象(在常规模式下)或undefined
(在严格模式下)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.