Использовать $ .extend () для наследования прототипа? - PullRequest
2 голосов
/ 26 января 2012

Возможно, это безумный вопрос, но что-то вроде:

var MyPrototypeObject {
    prop: 0;
};    
var ob1 = Object.create(MyPrototypeObject);
var ob2 = { 
    meth: function() { 
        this.prop = 5; // update prop 
        return this.prop;
    }
};

, где Object.create клонирует прототип, а $. Extension используется для добавлениядополнительные методы к ob1, где this.prop указывает на прототип?Какой лучший способ добавления новых методов?

$.extend(ob1, ob2);

Связанный: Переопределение методов с наследованием прототипа .

1 Ответ

1 голос
/ 26 января 2012

pd-style аналогичен и рекомендует

var SomeProto = {
    prop: 0;
};    

var ob1 = extend(Object.create(SomeProto), { 
    meth: function meth() { 
        return (this.prop = 5); // update prop 
    }
});

Это эффективный способ обработки ОО в JavaScript. Обратите внимание, что $.extend - это дерьмовая реализация для этого, потому что она имеет проверку isPlainObject, которая возвращает false для объектов, имеющих прототипы

...