2013-09-16 5 views
1

Каких атрибутов делают вновь созданное имущество в prototye есть, что не может быть заменено см ниже ::Объекта prototye свойство в Javascript

Object.prototype.name="Maizere"; 
x=new Object(); 
console.log(x.name)//logs maizere 
x.name="Pathak"; 

Вместо того чтобы заменить значение свойства с таким же именем в prototye вместо нового свойства созданный на объекте, так что мне нужно знать everythig за этим запутанным кодом

+2

Одно свойство находится на прототипе другого экземпляра. – elclanrs

+0

* Назначение * (запись) всегда происходит на самом объекте, а не на его цепочке прототипов. Если свойство еще не существует на объекте, оно создается первым. Только для * чтения * свойство просматривается на прототипе (-ях), если оно не существует. –

ответ

3

При создании нового объекта (перед установкой его имя), у вас есть что-то вроде этого:

Object 
> prototype 
    > name = "Maizerre" 

Итак, если вы получили свое имя, оно сначала будет выглядеть по своим свойствам, а затем по цепочке прототипов, пока оно не найдет его.

В конце кода, у вас есть это:

Object 
> name = "Pathak" 
> prototype 
    > name = "Maizerre" 

Теперь, когда вы спросите имя, он находит одно, что свойство самого объекта, и не ищите вдоль прототип цепи.

Смежные вопросы