1

我是 JS 新手。如果我想将例如 2 个函数分配给一个构造函数,我是否必须通过原型调用函数声明两次?

function Shape(x, y) {
    this.x= x;
    this.y= y;
}



Shape.prototype.foo= function() {

    return ...;
};

Shape.prototype.bar= function() {

    return ...;
};
4

2 回答 2

2

如果我理解正确,这样的事情会起作用:

function Shape(x, y) {
    this.x= x;
    this.y= y;
}

Shape.prototype = {
    constructor: Shape,
    foo: function() {
        return ...;
    },
    bar: function() {
        return ...;
    }
}

http://jsfiddle.net/Yc4V4/

于 2013-04-05T21:50:03.517 回答
1

你可以这样做,或者你可以为原型分配一个新对象(覆盖任何现有的属性/方法):

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(){
    }
});
于 2013-04-05T21:50:48.190 回答