Показать сообщение отдельно
  #39 (permalink)  
Старый 24.08.2009, 19:24
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

JSprog, подожди, тут я уже начал путаться.

Сообщение от JSprog
В том что свойства из прототипа просто читаютса
А что ещё можно с ними делать? Вероятно, не только читать из прототипа, но и записывать туда. И свойства и методы, да?

Сообщение от JSprog
Именно
А почему тогда в данном случае .hasOwnProperty выдаёт true?

function A(x) {
  this.x = x;
  this.getX = funciton () {
    return this.x;
  };
}
 
var a = new A(10);
var b = new A(20);

// ну тут понятно
alert(a.hasOwnProperty('x')); // true
alert(b.hasOwnProperty('x')); // true

// а здесь почему, если ты говоришь, что
// метод getX - один на оба объекта
alert(a.hasOwnProperty('getX')); // true
alert(b.hasOwnProperty('getX')); // true


Сообщение от JSprog
Ведь зачем копировать метода на всех? Это отнимает много памяти да и редко методы менять приходитса в экземплярах.
Логично, но почему тогда .hasOwnProperty('getX') для обоих объектов выдало true? Есть ли какой-нибудь способ, чтобы метод .getX действительно был один на оба объекта? Сейчас получается, что оба из них имеют две разные функции, но выполняющие одно и тоже. Реально, не очень выгодно по ресурсам.

Сообщение от JSprog
Методы это тоже свойства которые содержат функцию.
Ну я понимаю, т.е. и свойства и методы можно хранить в прототипе и тогда эти свойства и методы будут одними и теми же на все экземпляры, так? Или не так?

Сообщение от JSprog
Верно только для методов
Можешь показать на примере, не очень понял. Почему свойства так обделены?
__________________
Тонкости ECMAScript
Ответить с цитированием