javascript - 方法执行 JavaScript

标签 javascript

为什么 this.name 在这里不起作用?如何解决这个问题?

var john = {
  name: 'John',
  greet: function(person) {
    alert("Hi " + person + ", my name is " + this.name);
  }
};
var fx = john.greet;
fx("Mark"); //Hi Mark, my name is

最佳答案

在本例中,

this 指的是 JavaScript window 对象,因为您实际上是在重新定义函数名称。直接调用 john.greet ("Mark") 就可以了,因为 this 将引用调用该方法的对象。

就您而言,您可以使用对象名称来引用其属性。

引用这篇文章: How does the "this" keyword in Javascript act within an object literal?

另一种可能的解决方案是更改函数本身的上下文,这可以通过使用 Function.prototype.bind() 来完成方法。有关详细信息,请参阅@Markus Stefanko 的回答。

var john = {
  name: 'John',
  greet: function(person) {
    alert("Hi " + person + ", my name is " + john.name);
  }
};
var fx = john.greet;
fx("Mark"); //Hi Mark, my name is

关于javascript - 方法执行 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53773338/

相关文章:

Javascript 在第 2 3 行给出的字符串不起作用

javascript - onbeforeunload期间允许执行什么样的操作

javascript - 将项目附加到容器的问题

javascript - AngularJS 多个指令 ngIf 要求在 !isFocused 上进行嵌入

javascript - MySQL:使用不同的查询,然后将相同的表过滤与其结果连接起来

javascript - Highstocks 显示太多价格变动

javascript - 如何设置依赖关系以及如何编译 npm 模块?

javascript - Angular js 浏览器问题

javascript - 如何将 $.deferred 与不可观察的函数一起正确使用?

javascript - 使用 mix-blend-mode 单击 'hole' 剪辑