Javascript 如何在对象内部调用函数
我大约一周前才开始学习Javascript,遇到了一点绊脚石。在提供的链接中,无论出于何种原因,我都无法调用对象内部的函数。你知道我做错了什么吗?任何建议都很好Javascript 如何在对象内部调用函数,javascript,Javascript,我大约一周前才开始学习Javascript,遇到了一点绊脚石。在提供的链接中,无论出于何种原因,我都无法调用对象内部的函数。你知道我做错了什么吗?任何建议都很好 您正在调用函数,但函数返回未定义。请注意,this在不同的上下文中有不同的含义,在testObj中,this==testObj,因此this.word是未定义的 这可能会有所帮助。您正在调用函数,但函数返回未定义。请注意,this在不同的上下文中有不同的含义,在testObj中,this==testObj,因此this.word是未定义
您正在调用函数,但函数返回未定义。请注意,
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:有趣。我想知道它是故意按照规范工作,还是碰巧作为未定义的行为工作。后者可能是特定于浏览器的。不管怎样,我还是建议不要这样做,因为这样做会使意图变得不明确。不过,这是一个很好的测试。正如你所知道的,你在问题中遇到了问题,而不仅仅是链接到某个东西。这样,任何发现你的问题的人都可以从中受益,即使链接断了。