gpt4 book ai didi

javascript - 从内部对象 javascript 设置字段值

转载 作者:行者123 更新时间:2023-11-28 16:25:53 25 4
gpt4 key购买 nike

我有一个名为 light 的类,它通过 ajax 加载其状态:

function Light(name, channel, type, state) {
this.name = name;
this.channel;
this.type=type;
this.state = state; //0=off 1=on
this.turnOn = function () {
this.state = 1;
$('#luce-' + name).attr('src', controlImagePath + '' + type + '100.png');
}
this.turnOff = function () {
this.state = 0;
$('#luce-' + name).attr('src', controlImagePath + '' + type + '00.png');
}
this.toggle = function () {
if (this.state == 0) this.turnOn();
else this.turnOff();
}
this.checkState = function () {
var result;
$.jsonp({
callback: "callback",
url: 'http://' + serverAddress + ':' + serverPort + '/GetChannelValueAsJsonp?channelName=' + channel + '&callback=?',
success: function (data) {
if (data > 0) {
this.turnOn();
} else {
this.turnOff();
}
},
error: function (xOptions, textStatus) {
console.log("error");
}
});
}

}

一直报错:

Uncaught TypeError: Object #<Object> has no method 'turnOn'

我怀疑这是因为成功函数覆盖了 Light 范围。如何引用另一个函数作用域中的对象?
Java 中的 IE 我会做 Light.this.turnOn()...如何用 javascript 做到这一点?
谢谢!

最佳答案

XHR 回调函数中的

this 引用 jQuery/XHR 对象。您必须将 this 关键字保存在变量中:

this.checkState = function () {
var result;
var $this = this; //Saving `this`
$.jsonp({
callback: "callback",
url: 'http://' + serverAddress + ':' + serverPort + '/GetChannelValueAsJsonp?channelName=' + channel + '&callback=?',
success: function (data) {
if (data > 0) {
$this.turnOn(); //Referring to `this` through $this`
} else {
$this.turnOff();
}
},
error: function (xOptions, textStatus) {
console.log("error");
}
});
}

关于javascript - 从内部对象 javascript 设置字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8038353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com