вопрос по prototype
Здравствуйте!
Подскажите пожалуйста, немного недогоняю по prototype в JS. Скажем есть пример из учебника: var animal = { eats: true } function Rabbit(name) { this.name = name; } Rabbit.prototype = animal; var rabbit = new Rabbit('John'); alert( rabbit.eats ); // true, т.к. rabbit.__proto__ == animal Здесь Rabbit.prototype равно animal. И соответственно объект rabbit наследует все свойства объекта animal. В главе про классы есть пример: var obj = { }; alert( obj ); // "[object Object]" ? И говорится что запись {} эквивалентна записи new Object При выполнении new Object, создаваемому объекту ставится __proto__ по prototype конструктора, в данном случае это будет Object.prototype — встроенный объект, хранящий свойства и методы, общие для объектов, в частности, есть Object.prototype.toString. Я что-то не пойму, в первом примере мы назначили Rabbit.prototype = animal, здесь все понятно animal стал прототипом rabbit, а во втором примере почему прототипом будет Object.prototype??? Чему равен Object.prototype ??? Если следовать логике первого примера, то Object.prototype = "некий объект" Тогда прототипом obj должен быть "некий объект"? |
Цитата:
|
Спасибо, понял.
|
цепочка прототипов кончается обьектом null
и да Object.prototype = {встроенный обьект с методами} а Object.prototype.__proto__ = null и дальше ничего нет |
Часовой пояс GMT +3, время: 04:49. |