Сообщение от almac
|
1. Почему прототип объекта не является простым Object?
Пример (тут он явно не просто Object):
function Obj() {}; Obj.prototype;
|
function a() {};
alert(a.prototype instanceof Object) //true
Почему это не объект?
Сообщение от almac
|
2. В чем разница между прототипом и экземпляром объекта? В консоль они выводятся почти как один и тот же объект (выглядят так, как будто были созданы при помощи одного и того же конструктора)
Пример:
function Obj() {}; var o = new Obj(); o; Obj.prototype;
|
Смотри:
function Animal() {
this.name = 'имя по умолчанию'
this.type = 'По умолчанию - медведь'
}
var bear = new Animal();
/* Вид bear:
{
name: 'имя по умолчанию',
type: 'по умолчанию медведь'
}
*/
alert(bear.name); alert(bear.type);
bear.name = 'Изменяем имя у bear'
alert(bear.name) // изменили ( в prototype - нет )
/* Смысл в том, что в прототипе содеражться ССЫЛКИ на свойства конструктора, а ново созданом объекте все приватное (мы изменили имя, но в прототипе оно не изменилось)
*/
Сообщение от almac
|
3. Зачем задавать конструктор для прототипа при ПЕРЕзаписи прототипа?
Пример:
function Obj() {}; Obj.prototype = {}; Obj.prototype.constructor = Obj;
|
Это уже смотрите задачу, так пример не приведу сходу. Дело в том, что:
function a() {} // Если читали про прототипы вообще, то знаете, что единственное свойство которое есть у прототипов при созданию, это constructor, в твоем коде, ты его меняешь. (опустошаешь, и меняешь)
Про последнее уже не знаю.
P.S. мог что-то неправильно сказать, так что...почитай еще)