为什么 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/