вопрос по 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, время: 21:57. |