JS通过原型的几个功能

时间:2013-04-05 21:42:55

标签: javascript function prototype

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

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



Shape.prototype.foo= function() {

    return ...;
};

Shape.prototype.bar= function() {

    return ...;
};

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分: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(){
    }
});