Tôi đang gặp khó khăn khi tham chiếu "this" từ bên trong hàm javascript inline, trong một phương thức đối tượng.Truy cập từ bên trong hàm nội tuyến của đối tượng
var testObject = {
oThis : this,
testVariable : "somestring",
init : function(){
console.log(this.testVariable); // outputs testVariable as expected
this.testObject.submit(function(){
var anotherThis = this;
console.log(this.testVariable) // undefined
console.log(oThis.testVariable) // undefined
console.log(testObject.testVariable) // outputs testVariable
console.log(anotherThis.testVariable) // undefined
}
}
Làm cách nào để truy cập this.testVariable
từ bên trong chức năng gửi? Tôi cũng đang sử dụng jQuery, nếu điều đó tạo nên sự khác biệt.
Tôi tự hỏi nếu điều này là cách tiếp cận tốt nhất - và có lẽ tôi nên có nộp như một chức năng riêng biệt, và sau đó tham khảo inline rằng, giống như:
init : function(){
this.testObject.submit = this.submitForm;
},
submitForm : function(){
// do validation here
console.log(this.testVariable) // outputs testvariable
.
.
.
return valid;
}
Nhưng điều này dường như không làm việc một trong hai - và Tôi nghĩ rằng tôi chỉ muốn giữ chức năng gửi nội tuyến trong phương thức init
của tôi bây giờ.
bản sao có thể có của [Tại sao kết thúc này không có quyền truy cập vào từ khóa 'này'? - jQuery] (http://stackoverflow.com/questions/3323189/why-doesnt-this-closure-have-access-to-the-this-keyword-jquery) –