Ну, на самом деле, они делают одно и то же:
Dog.prototype = new Animal;
Значение this
внутри методов будет ссылаться на базовый объект , где была вызвана ссылка, вслучай:
Dog.inherits(Animal);
Значение this
будет ссылаться на функцию конструктора Dog
, а аргумент obj
будет функцией Animal
.
Когда выcall:
Animal.pass(Dog);
Значение this
будет относиться к функции Animal
, делая в конце то же самое, что и метод inherits
, но наоборот.
Я бы порекомендовал вам , а не расширить объект Object.prototype
, потому что это может вызвать много проблем, например, эти два свойства будут перечислены в любом цикле for-in
, например:
for (var prop in {}) { // <-- an empty object!
alert(prop); // will alert 'inherits' and 'pass'
}
Все объекты наследуются от Object.prototype
, и кажется, что вы собираетесь использовать эти методы только для объектов Function, было бы безопаснее расширять объект Function.prototype
или реализовывать методы как функции, которые принимаютдва параметра.