LINUX.ORG.RU

Прототипы и нативные объекты браузера

 


0

1

Почему в этих 2-х кусках объекты работают по разному, точней, второй вообще не работает?


ob={}
ob.style={}
ob.style.__proto__={foo: 1, bar: 2}
console.log(ob.style.foo, ob.style.bar) // 1 2


ob=document.createElement("div")
ob.style.__proto__={width: 100, height: 100}
console.log(ob.style.width, ob.style.height) // fuck!!!

Это связано с тем, что нативные объекты по другому работают с прототипами? Если да, то как это обойти?

Спасибо.

Перемещено beastie из development


не пользуйся __proto__.
и уж тем более не заменяй прототипы объектов имеющих «нативное» происхождение.

dib2 ★★★★★
()

Есть сомнение, что домовские элементы можно вертеть через колено как обычное объекты. Они только с виду похожи.

Vit ★★★★★
()

Кстати, __proto__ работает с простыми объектами, а не инстансами классов, как во втором случае.

Vit ★★★★★
()

Все-таки ДОМ-овские объекты не родные для жс, обходные пути слишком костыльными окажутся. А в этом конкретном примере проще классы и стили применить.

anonymous
()
Ответ на: комментарий от phill

Да фик знает :) . Я в наследовании JS постоянно путаюсь.

Vit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.