在 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/