Javascript扩展了对象的原型,但保留了原型

时间:2013-12-03 13:38:01

标签: javascript

我需要扩展对象的原型而不删除它的当前原型

var obj = (function() {
    function Obj(){

    }

    Obj.prototype.func1 = function() {}

    extend = {
        func2: function(){}
    }

    Obj.prototype = extend;

    return Obj;
}());

如何执行此操作并保留func1

3 个答案:

答案 0 :(得分:2)

就像使用for-in循环将属性从现有extend对象复制到Obj.prototype一样简单:

for (var key in extend)
    // make sure it's actually a direct property of extend
    if (extend.hasOwnProperty(key))
        // copy over value from extend into prototype
        Obj.prototype[key] = extend[key];

答案 1 :(得分:1)

Obj.prototype.func2 = function() {}

...只需继续向现有原型添加方法。

答案 2 :(得分:1)

如果要从其他对象“导入”属性,可以创建“扩展”功能:

function extend(o1, o2) {
  for (var key in o2)
    if (o2.hasOwnProperty(key))
      o1[key] = o2[key];
  return o1;
}

然后:

  extend(Obj.prototype, extend);