javascript - 带原型(prototype)的新函数

标签 javascript function

在 javascript 中,我们有以下对象创建方法:

// Prototype Object
var prototype = {
  jump: function() {}
}

// Create person
var person = Object.create(prototype)

我的问题是:有没有办法创建新函数?换句话说:

// Prototype Object
var prototype = {
  jump: function() {}
}

// Create person and somehow define invokation
var person = ?? // e.g.'Function.create(prototype, function() {})'

显然 Function.create 不起作用。我想知道是否有一种本地方法可以做到这一点,而不是创建一个新函数并为其分配一长串方法。函数毕竟是对象,不是吗?如果这在 Javascript 中没有意义,为什么不呢?

** 更新 ** 为了清楚起见,让我添加以下内容。 person 创建的结果应该是一个可调用但也具有原型(prototype)功能的 person 函数对象,例如person() 和 person.jump();

最佳答案

更新后答案

Javascript 没有预先存在的内置方法,我知道它可以做到这一点(我怀疑有人会想要它),但编写自己的方法相当容易:

function FunctionObjectCreate(prototype, mainFunc) {
    Object.keys(prototype).forEach(function(key) {
        mainFunc[key] = prototype[key];
    });
    return mainFunc;
}

var prototype = {
    jump: function() { console.log('jump'); }
};

var person = FunctionObjectCreate(prototype,
                                  function() { console.log('person'); });

person();      // prints 'person'
person.jump(); // prints 'jump'

关于javascript - 带原型(prototype)的新函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28118352/

相关文章:

javascript - jquery中无法比较两个 float

c - 如何将数组传递给 C 中的函数(在 Fedora 上)?

c - 将可变长度二维数组传递给函数

mysql - 嵌套 if-else 语句的 SQL 语法错误 [mysql]

python - 将值作为索引函数分配给 2D numpy 数组的有效方法是什么

javascript - 将超链接添加到 xml 文件中

javascript - Meteor 模板数据上下文在模板中不可用。刷新时创建

javascript - 从 C# 中的输出流返回文本

javascript - 嵌套树结构数据生成

C++请求(blank)中的成员(blank),调用方法时为非类类型(blank)