Наследование __proto__ в JavaScript

372
27 декабря 2016, 02:16

Столкнулся с тем, что JS не ищет свойства прописанные в прототипе во вложенности. Есть ли способ заставить искать вложенные свойства?

var obj = { 
  a: {} 
}; 
 
obj.__proto__ = { 
  a: { 
    __proto__: { 
      b: true 
    } 
  } 
}; 
 
console.log(obj.a.b); // undefined 
 
// Нежелательный метод 
obj.a.__proto__ = {b:true};

Answer 1

Если я правильно понял, то у на клиенте хранятся настройки в файле, который Вы грузите в приложение, которому могут потребоваться значения отсутствующие в конфигурации пользователя. В таком случаи самый простой вариант динамически расширять конфигурацию пользователя -

let prevSettings = { 
  a: 1, 
  b: 1 
}; 
 
let currentSettings = { 
  b: 2, 
  c: 2 
}; 
 
console.log(Object.assign({}, prevSettings, currentSettings)); // a: 1, b: 2, c: 2 
console.log(Object.assign({}, currentSettings, prevSettings)); // a: 1, b: 1, c: 2

Как видно первый вариант создает новый объект но изменяет значения предыдущего объекта, в отличии от второго варианта, который лишь добавляет новые-несуществующие свойства, оставляя существующие нетронутыми.

Если это не подходит, то объясните более подробно.

READ ALSO
Привязать модель и вид к существующему div backbone

Привязать модель и вид к существующему div backbone

Гайз, нужна помощь, не могу понять, каким образом я могу привязать модель и вид к уже существущему массиву элементов в DOM дереве ( в divcontainer у меня...

352
js json -> php. Vk api

js json -> php. Vk api

Делаю передачу данных из iframe в мой скрипт (vkcom)

419
как вызвать метод компонента Vue.js по клику?

как вызвать метод компонента Vue.js по клику?

Есть компонент модального окна dialogvue из пакета vue-mdl

480
Валидация формы, где ошибка?

Валидация формы, где ошибка?

Доброго времени суток, Делаю валидацию формы, подскажите где ошибка? не отрабатывает блок if/else

372