Здравствуйте!
Подскажите пожалуйста, немного недогоняю по 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 должен быть "некий объект"?