为什么要调用 alert()
弹出undefined
?我猜测 Javascript 没有使用 this
我认为是的。如何修复代码,同时仍使其读起来有点像非原型(prototype)继承代码?
<!DOCTYPE html>
<html>
<head><title>Help</title>
<script type="text/javascript">
var Foo = function (myName) {
this.myName = myName;
}
Foo.prototype.sayName = function () {
alert(this.myName);
}
var foo = new Foo("I am foo");
var bar = {
ask: function (fn) {
fn();
}
};
function doIntroductions() {
bar.ask(foo.sayName);
}
</script>
</head>
<body onload="doIntroductions();">
</body>
</html>
最佳答案
this
取决于您如何调用该函数。您正在全局对象的上下文中调用该函数,其中没有属性 sayName
存在。您需要显式设置上下文:
bar.ask(foo.sayName.bind(foo));
bind
确保this
sayName
里面是 foo
当您调用fn
时.
关于javascript - 为什么成员未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34703448/