1
我有一些問題試圖找出我的對象設計有什麼問題。Javascript:如何從事件回調函數訪問對象成員
var comment = function(){
var textarea = null;
$(document).ready(init);
function init()
{
$('.reply').click(comment.reply_to);
this.textarea = $('.commentbox textarea');
console.log(this.textarea); // properly shows the textarea element
console.log(textarea); // outputs null
}
function set_text(the_text)
{
console.log(textarea); // outputs null
console.log(this.textarea); // outputs undefined
textarea.val(the_text);
}
return {
reply_to: function()
{
console.log(this); // outputs the element who fired the event
set_text('a test text'); // properly gets called.
}
};
}();
當文檔被完全加載時,會自動調用init()並初始化對象。我必須注意到,textarea成員正確指出了所需的元素。 單擊事件附加到「回覆」按鈕,因此每當用戶單擊它時都會調用reply_to()函數。
所以,這是我不明白: *當使用「這個」是安全的?使用它從reply_to()它不是,因爲它看起來像上下文被設置爲調用者元素。 *爲什麼我可以從reply_to調用「set_text()」,但我無法訪問「textarea」成員? *我該怎麼做才能從reply_to()(這是一個事件回調)訪問「textarea」成員?
我回來了,因爲我想讓它公開。雖然我沒有測試如果使用它作爲回調它需要公開...我會測試它 – 2010-12-03 10:15:42