Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Непонятки с prototype (https://javascript.ru/forum/misc/30697-neponyatki-s-prototype.html)

Хон Гиль Дон 12.08.2012 21:10

Непонятки с prototype
 
Во всех талмудах утверждается что у каждого объекта есть свойство prototype в котором хранится некоторый пустой обект, и этому объекту можно добавлять свойства которые будут доступны как свойства самого объекта, однако на практике теория не подтвержается:

myObj = {};
console.log(myObj.prototype) //выводит undefined
myObj.prototype.prop = 'some value'; //Ошибка "Cannot set property 'prop' of undefined


Что я понимаю неправильно ?

oneguy 12.08.2012 21:19

Цитата:

Сообщение от Хон Гиль Дон
у каждого объекта есть свойство prototype

Это неверно. Это у каждой функции, созданной пользователем, есть свойство prototype, а у других объектов его может и не быть.

B@rmaley.e><e 12.08.2012 21:31

У объекта нет свойства prototype, но есть скрытое свойство [[proto]], в котором хранится ссылка на прототип, заданный объекту при конструировании. Некоторые среды позволяют обратиться к нему по имени свойства __proto__, а в ES5 есть Object.getPrototypeOf:
var a = function(){};

alert( a instanceof Function )
alert( [a.__proto__, a.__proto__ === Function.prototype] )
alert( [Object.getPrototypeOf(a), Object.getPrototypeOf(a) === Function.prototype] )

Хон Гиль Дон 12.08.2012 21:48

Да, действительно, везде где используется нотация
someObj.prototype.bla = something
этот someObj является функцией, но нигде на этот подвох не указывается, надо бы послать реквест в javascript garden


Часовой пояс GMT +3, время: 10:22.