2012-02-08 2 views
3

Im new to oo concept with javascript. От ejohn.org просто наследованиемJavascript Simple Inheritance method

Standard прототипичный Наследование

function Person(){} 
function Ninja(){} 
Ninja.prototype = new Person(); 
// Allows for instanceof to work: 
(new Ninja()) instanceof Person 

Заявление с сайта по выше

Что сложно об этом, однако, заключается в том, что все, что мы действительно хотим преимущества 'instanceof', а не целая стоимость создания объекта объекта Person и запуска его конструктора. Чтобы противодействовать этому, мы имеем переменную в нашем коде, инициализирующую, которая устанавливается в true, когда мы хотим создать экземпляр класса с единственной целью использования его для прототипа .

Что означает вышеуказанное утверждение?

В чем преимущества простого наследования с помощью john-resig над стандартным прототипным наследованием?

var fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/ 

Для чего это испытание?

Может ли кто-нибудь объяснить поток функции самоисполнения? Хотя код аннотирован, я не мог следить за потоком

ответ

2

Это означает, что мы можем создать экземпляр класса для использования instanceof без необходимости ссылаться на его функцию-конструктор дефектов init.

Fredprovides an answer на свой второй запрос ...

Тест хуга определяет, может ли браузер осмотреть тело функции текстуального . Если это возможно, вы можете выполнить оптимизацию только , обертывая переопределенный метод, если он на самом деле вызывает this._super() где-то в своем теле. Так как для поддержки _super требуется дополнительное закрытие и , вызов функции должен быть пропущен, если это не нужно. .