javascript - 将一个对象的函数传递给它的另一个函数

标签 javascript

这是我的:

var Person = function(fname, lname) {
        this.fname = fname;
        this.lname = lname;
    };

    Person.prototype = {
        getFullName: function() {
            return this.fname + " " + this.lname;
        },
        doStuff: function(stuff) {
            return stuff();
        }
    };

var john = new Person("John", "Doe");

doStuff 函数与其他函数一起工作,但执行以下操作会返回 undefined undefined:

console.log(john.doStuff(john.getFullName));

我所拥有的东西有什么问题,我该如何改变它才能让它发挥作用? 谢谢。

最佳答案

这是因为 this 没有引用对象。

您可以使用 .bind() method为了设置 this 的值:

john.doStuff(john.getFullName.bind(john));

但是,这不是很灵活,因此您可以将它绑定(bind)在 doStuff 方法中:

doStuff: function(stuff) {
  return stuff.apply(this);
}

关于javascript - 将一个对象的函数传递给它的另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113624/

相关文章:

javascript - 如何使敌人看起来与英雄不同 Canvas socket.io

javascript - 通过rails中的hidden_​​field传递值

javascript - 模态框内的图像

javascript - JSON解析成HTML,对象如何映射到对应的HTML?

javascript - 如果屏幕宽度小于 960 像素,则将屏幕宽度添加到类中

javascript - 跨源请求只支持HTTP,不支持跨域

javascript - 在页面加载时运行 jQuery 函数并使用按钮重复

javascript - 在跨度内修改链接时出现问题

javascript - 如何防止子可排序对象被克隆

javascript - 使用正则表达式删除字符串+字符