2012-01-26 3 views
2

Может быть, это сумасшедший вопрос, но что-то вроде:

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

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

$.extend(ob1, ob2); 

Связанный: Override Methods with Prototypal Inheritance.

ответ

1

pd-style похож и рекомендует

var SomeProto = { 
    prop: 0; 
};  

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

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

+0

Hell yea! =] В этой настройке вы можете использовать 'this' в' SomeProto'? Я получил его для работы, кроме тех случаев, когда я пытался использовать 'this' в методах' SomeProto'. Разве я не могу это сделать? – ryanve

+0

@ryanve, конечно. Обратите внимание, что 'this! == SomeProto' внутри' SomeProto' - это какой-то контекст, который вы передаете при вызове метода. – Raynos

+0

Отличная да, именно это я и хочу. У меня должна быть ошибка где-то еще. – ryanve

 Смежные вопросы

  • Нет связанных вопросов^_^