我有兩個簡單的鏈接,點擊時應該等待一秒鐘,然後添加一個類來改變文本的顏色。工作版本使用$.proxy
和我試圖使用本地JavaScript來更改this
的含義的非工作版本。爲什麼btnWaitNoProxy
這仍然指的是全局對象?JavaScript setTimeout,使用調用來改變這
代碼:
var obj = {
wait: function() {
setTimeout(function() {
console.log('inside the setTimeout');
$(this).addClass('lesson');
//refers to global object in the console
}, 1000);
}
};
$('#btnProxy').on('click', function() {
console.log('preparing to add class...');
setTimeout($.proxy(function() {
$(this).addClass('lesson')
console.log(this);
}, this), 1000);
});
$('#btnWaitNoProxy').on('click', function() {
console.log(this);
//call still refers to the global object
obj.wait.call(this);
});
我想一個燈泡只是爲了我而點擊了,爲什麼要使用'self = this'或'that = this'! :) – wootscootinboogie