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
|
Верно только для методов
|
Можешь показать на примере, не очень понял. Почему свойства так обделены?