Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2013, 23:41
Аспирант
Отправить личное сообщение для xfreewindx Посмотреть профиль Найти все сообщения от xfreewindx
 
Регистрация: 19.08.2012
Сообщений: 33

вопрос по 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 должен быть "некий объект"?
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2013, 23:52
Аватар для Akalenik
Интересующийся
Отправить личное сообщение для Akalenik Посмотреть профиль Найти все сообщения от Akalenik
 
Регистрация: 05.03.2013
Сообщений: 20

Цитата:
Object.prototype is one of the rare objects that has no prototype: it does not inheritany properties. Other prototype objects are normal objects that do have a prototype. All of the built-in constructors (and most user-defined constructors) have a prototype that inherits from Object.prototype. For example, Date.prototype inherits properties from Object.prototype, so a Date object created by new Date() inherits properties from both Date.prototype and Object.prototype. This linked series of prototype objects is known as a prototype chain.
Это цитата из Фланагана по данному вопросу.
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2013, 11:03
Аспирант
Отправить личное сообщение для xfreewindx Посмотреть профиль Найти все сообщения от xfreewindx
 
Регистрация: 19.08.2012
Сообщений: 33

Спасибо, понял.
Ответить с цитированием
  #4 (permalink)  
Старый 10.04.2013, 18:03
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

цепочка прототипов кончается обьектом null

и да Object.prototype = {встроенный обьект с методами}

а Object.prototype.__proto__ = null и дальше ничего нет
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплытие событий или что то не так... Кирюха =) jQuery 6 30.03.2013 12:56
Вопрос по each() и перебору строк таблицы battrack jQuery 1 09.02.2012 14:30
область видимости переменных в prototype (тупой вопрос)) stnw Общие вопросы Javascript 3 11.02.2011 19:25
Prototype v1.4.0 and Prototype v1.5.1_rc3 prihod Prototype & script.aculo.us 2 02.10.2008 16:08
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56