在 Javascript 中设置没有 __proto__ 的函数原型
Setting the prototype of a function without __proto__ in Javascript
我想创建一个以对象为原型的构造函数。
例如:
var constructor=function(){
this.foo=bar;
}
var constructorProto={
method:function(){}
}
constructor.__proto__=constructorProto;
constructor.method();
new constructor;
功能演示:http://jsfiddle.net/juwt5o97/
这允许我在调用 new
之前传递构造函数并修改它。但是,我不想使用 __proto__
或 Object.setPrototypeOf()
。有 "proper" 的方法吗?
如果您想扩展第一个 class 的原型(以便实例继承这些方法),您可以使用 Object.create
:
var ClassA=function(){
this.foo='bar';
}
var protoObject = {
method:function(){alert('t');}
}
ClassA.prototype = Object.create(protoObject);
new ClassA().method();
如果你只想将静态函数附加到第一个函数,那么你可以这样做:
for (var property in protoObject) {
if (typeof protoObject[property] == 'function') {
ClassA[property] = protoObject[property];
}
}
ClassA.method();
我想创建一个以对象为原型的构造函数。
例如:
var constructor=function(){
this.foo=bar;
}
var constructorProto={
method:function(){}
}
constructor.__proto__=constructorProto;
constructor.method();
new constructor;
功能演示:http://jsfiddle.net/juwt5o97/
这允许我在调用 new
之前传递构造函数并修改它。但是,我不想使用 __proto__
或 Object.setPrototypeOf()
。有 "proper" 的方法吗?
如果您想扩展第一个 class 的原型(以便实例继承这些方法),您可以使用 Object.create
:
var ClassA=function(){
this.foo='bar';
}
var protoObject = {
method:function(){alert('t');}
}
ClassA.prototype = Object.create(protoObject);
new ClassA().method();
如果你只想将静态函数附加到第一个函数,那么你可以这样做:
for (var property in protoObject) {
if (typeof protoObject[property] == 'function') {
ClassA[property] = protoObject[property];
}
}
ClassA.method();