[英]How to call a function inside an object
我大約一個星期前才開始學習Javascript,但遇到了一些絆腳石。 在提供的鏈接中,無論出於何種原因,我都無法調用對象內部的函數。 有什么想法我做錯了嗎? 任何建議都很好。
您正在調用該函數,但該函數返回未定義。 要注意的是, this
有不同的含義叫不同的背景下, testObj
, this == testObj
,因此this.word
是不確定的。
也許這個小提琴會有所幫助。
var testObj = {
bar: function(){
console.log(this.word)
}
}
當您調用testObj.bar時,此處指的是testObj,而testObj沒有屬性字
var testObj = {
bar: function(){
console.log(this.word)
}.bind(this)
}
使用.bind(this)或.bind(window)
因為范圍已更改。
在JavaScript中,范圍是指代碼的當前上下文。 范圍可以是全局或本地定義的。 了解JavaScript范圍是編寫防彈代碼並成為更好的開發人員的關鍵。 您將了解變量/函數可在何處訪問,能夠更改代碼上下文的范圍,能夠編寫更快和更可維護的代碼以及更快地進行調試。
因此正確的代碼是:
var that = this;
var testObject = { bar: function() { return that.word }}
在您的解決方案中,“ this”是“ window”對象。 因此,您還可以編寫以下代碼:
var testObject = { bar: function() { return window.word }}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.