2010-04-11 3 views
6

я наткнулся на этот слайд: http://www.slideshare.net/stoyan/javascript-patterns#postCommentСброс конструктора javascript: что это такое?

на странице 35:

Вариант 5 + супер + конструктор сброса

function inherit(C, P) { 
    var F = function(){}; 
    F.prototype = P.prototype; 
    C.prototype = new F(); 
    C.uber = P.prototype; 
    C.prototype.constructor = C; // WHY ??? 
} 

Я не понимаю. Может ли кто-нибудь объяснить, для чего нужна последняя строка?

C.prototype.constructor = C; // WHY ??? 

Благодаря

ответ

11

Это дает объяснение http://phrogz.net/JS/Classes/OOPinJS2.html

В частности

Cat.prototype = new Mammal();  // Here's where the inheritance occurs 
Cat.prototype.constructor=Cat;  // Otherwise instances of Cat would have a constructor of Mammal 
+3

Спасибо. Javascript - действительно странный язык. :) – Sake

+2

Это. Я лично не использовал бы имя 'constructor' для хранения конструктора, потому что' constructor' уже имеет значение в JavaScript. (Просто не полезно). – bobince