javascript - 为什么成员未定义?

标签 javascript inheritance undefined member prototypal-inheritance

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

相关文章:

javascript - 如何使 react 路由器链接加载页面像 anchor 标签?

c++ - enable_shared_from_this 必须是第一个基类吗?

java - 抽象类继承具有不同参数类型的抽象方法

python - 动态创建具有继承和类方法的类列表

javascript - 如何摆脱未定义?

javascript - jQuery ajax() 函数忽略 Firefox 中的 dataType 参数

javascript - data 是 getJSON() 回调函数中的保留变量吗?

javascript - AngularJS 异步加载表单验证

c++ - 未定义对类::函数错误的引用

c++ - 未定义/未指定/实现定义的行为警告?