我刚刚开始学习一周前的Javascript,而且我遇到了一些绊脚石。在提供的链接中,我无论出于何种原因都无法调用对象内部的函数。我有什么想法我做错了吗?任何建议都会很棒。
答案 0 :(得分:2)
您正在调用该函数,但函数返回undefined。请注意this
在testObj
,this == testObj
中在不同的上下文中调用的含义不同,因此this.word
未定义。
也许这fiddle可以提供帮助。
答案 1 :(得分:0)
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)
答案 2 :(得分:0)
因为范围已经改变。
在JavaScript中,范围是指代码的当前上下文。范围可以是全局或本地定义的。理解JavaScript范围是编写防弹代码和成为更好的开发人员的关键。您将了解变量/函数的可访问位置,能够更改代码上下文的范围,并能够编写更快,更易维护的代码,以及更快地进行调试。
所以正确的代码是:
var that = this;
var testObject = { bar: function() { return that.word }}
在您的解决方案中,"这个"是"窗口"宾语。所以你也可以这样编码:
var testObject = { bar: function() { return window.word }}