我有大约八个原型函数的Date对象。我想避免重复Date.prototype。是否有为单个对象编写多个原型函数的统一方法?

我尝试这样做无济于事:

Date.prototype = {
  getMonthText: function(date){
    var month = this.getMonth();
    if(month==12) month = 0;
    return ['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'][month];
  },
  getDaysInMonth: function(date){
    return 32 - new Date(this.getFullYear(), this.getMonth(), 32).getDate();
  }
};

最佳答案

您所做的方式就是用新对象替换原型。

如果您使用jQuery,则它具有$ .extend方法,您可以像$.extend(Date.prototype, { getMonthText: function(date){...}, getDaysInMonth: function(date){...} })这样使用

如果您不使用,则可以使用以下命令轻松创建类似于扩展的函数:

function extend(proto,newFunctions) {
   for (var key in newFunctions)
       proto[key] = newFunctions[key]
}


并致电:

extend(Date.prototype,{ getMonthText: function(date){...},  getDaysInMonth: function(date){...} });


另一种方法是直接执行:

Date.prototype.getDaysInMonth = function(date){ ... }
Date.prototype.getMonthText = function(date){ ... }


我认为这比扩展函数更具可读性。

关于javascript - 是否有为单个对象编写多个原型(prototype)函数的统一方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4934818/

10-16 22:17
查看更多