Javascript 如何在对象内部调用函数

Javascript 如何在对象内部调用函数,javascript,Javascript,我大约一周前才开始学习Javascript,遇到了一点绊脚石。在提供的链接中,无论出于何种原因,我都无法调用对象内部的函数。你知道我做错了什么吗?任何建议都很好 您正在调用函数,但函数返回未定义。请注意,this在不同的上下文中有不同的含义,在testObj中,this==testObj,因此this.word是未定义的 这可能会有所帮助。您正在调用函数,但函数返回未定义。请注意,this在不同的上下文中有不同的含义,在testObj中,this==testObj,因此this.word是未定义

我大约一周前才开始学习Javascript,遇到了一点绊脚石。在提供的链接中,无论出于何种原因,我都无法调用对象内部的函数。你知道我做错了什么吗?任何建议都很好


您正在调用函数,但函数返回未定义。请注意,
this
在不同的上下文中有不同的含义,在
testObj
中,
this==testObj
,因此
this.word
是未定义的


这可能会有所帮助。

您正在调用函数,但函数返回未定义。请注意,
this
在不同的上下文中有不同的含义,在
testObj
中,
this==testObj
,因此
this.word
是未定义的

也许这会有帮助

当您调用testObj.bar时 这里它指的是testObj,testObj没有属性词

var testObj = {
   bar: function(){
console.log(this.word)
}.bind(this)
}
使用.bind(此)或.bind(窗口)

当您调用testObj.bar时 这里它指的是testObj,testObj没有属性词

var testObj = {
   bar: function(){
console.log(this.word)
}.bind(this)
}

使用.bind(此)或.bind(窗口)

,因为作用域已更改

在JavaScript中,作用域指的是代码的当前上下文。作用域可以是全局定义的,也可以是局部定义的。理解JavaScript范围是编写防弹代码和成为更好的开发人员的关键。您将了解在哪里可以访问变量/函数,能够更改代码上下文的范围,能够编写更快、更可维护的代码,以及更快地调试

因此正确的代码是:

var that = this;
var testObject = { bar: function() { return that.word }}
在您的解决方案中,“this”是“window”对象。因此,您还可以编写以下代码:

var testObject = { bar: function() { return window.word }}

因为范围已经改变了

在JavaScript中,作用域指的是代码的当前上下文。作用域可以是全局定义的,也可以是局部定义的。理解JavaScript范围是编写防弹代码和成为更好的开发人员的关键。您将了解在哪里可以访问变量/函数,能够更改代码上下文的范围,能够编写更快、更可维护的代码,以及更快地调试

因此正确的代码是:

var that = this;
var testObject = { bar: function() { return that.word }}
在您的解决方案中,“this”是“window”对象。因此,您还可以编写以下代码:

var testObject = { bar: function() { return window.word }}

尝试使用<代码> < <代码>,而不是<代码> .Word ,你会看到控制台给你不同的值<代码>这个基于你所在的地方。@戴维,语法很奇怪,我同意,但是它的工作原理是:@ LZZLBK,让我建议你考虑使用下一个网站。question@MassimilianoCarosi:有趣。我想知道它是故意按照规范工作,还是碰巧作为未定义的行为工作。后者可能是特定于浏览器的。不管怎样,我还是建议不要这样做,因为这样做会使意图变得不明确。不过,这是一个很好的测试。正如你所知道的,你在问题中遇到了问题,而不仅仅是链接到某个东西。这样,即使链接断开,找到您的问题的任何人都可以从中受益。尝试使用
this
而不是
this.word
,您会看到控制台根据您所在的位置为
this
提供不同的值。@David,语法很奇怪,我同意,但它是有效的:。@lzzlbk,我建议你考虑使用下一个网站。question@MassimilianoCarosi:有趣。我想知道它是故意按照规范工作,还是碰巧作为未定义的行为工作。后者可能是特定于浏览器的。不管怎样,我还是建议不要这样做,因为这样做会使意图变得不明确。不过,这是一个很好的测试。正如你所知道的,你在问题中遇到了问题,而不仅仅是链接到某个东西。这样,任何发现你的问题的人都可以从中受益,即使链接断了。