我是 JS 新手。如果我想将例如 2 个函数分配给一个构造函数,我是否必须通过原型调用函数声明两次?
function Shape(x, y) {
this.x= x;
this.y= y;
}
Shape.prototype.foo= function() {
return ...;
};
Shape.prototype.bar= function() {
return ...;
};
我是 JS 新手。如果我想将例如 2 个函数分配给一个构造函数,我是否必须通过原型调用函数声明两次?
function Shape(x, y) {
this.x= x;
this.y= y;
}
Shape.prototype.foo= function() {
return ...;
};
Shape.prototype.bar= function() {
return ...;
};
如果我理解正确,这样的事情会起作用:
function Shape(x, y) {
this.x= x;
this.y= y;
}
Shape.prototype = {
constructor: Shape,
foo: function() {
return ...;
},
bar: function() {
return ...;
}
}
你可以这样做,或者你可以为原型分配一个新对象(覆盖任何现有的属性/方法):
Shape.prototype = {
foo : function(){
},
bar : function(){
}
};
如果您要向不同的原型添加大量方法并且不想覆盖整个原型对象,请定义一个辅助方法来为您执行分配:
function addToPrototype(constructor, obj){
for (var prop in obj){
constructor.prototype[prop] = obj[prop];
}
}
addToPrototype(Shape, {
foo : function(){
},
bar : function(){
}
});
addToPrototype(Shape, {
something : function(){
}
});
addToPrototype(Polygon, {
somethingElse : function(){
}
});