Как получить доступ к свойствам родительского объекта из дочернего объекта в JavaScript - PullRequest
1 голос
/ 20 июня 2020

Как мне получить доступ к свойствам родительского объекта из дочернего объекта в JavaScript.

function testingSetValuetoInheritedProperty() {
    
   let m = {x:1,y:2};
    
   let n = Object.create(m);
    
   **console.log(n.prototype.x);**
    
   return n
    
}

Я получаю TypeError: Cannot read property 'x' of undefined.

Ответы [ 2 ]

3 голосов
/ 20 июня 2020

Есть несколько способов получить доступ к свойству объекта.

function testingSetValuetoInheritedProperty() {

   let m = {x:1,y:2};
   let n = Object.create(m); // m becomes a prototype of object n

   //first - dot property accessor
   console.log(n.x);
   //second - square brackets property accessor
   console.log(n['x']);
   //third - object destructuring
   const { x } = n;
   console.log(x)
   
   
   console.log('-------Prototype------')

   //working with prototype of n

   //first
   console.log(Object.getPrototypeOf(n).x)
   //second
   console.log(n.__proto__.x) // <--- no longer recommended

}

testingSetValuetoInheritedProperty()

Для справки : аксессоры свойств и деструктуризация подробнее.

Прототипы: Object.create () , Object.getPrototypeOf () и Object.prototype. proto

Обратите внимание, что если вы это сделаете:

   let m = {x:1,y:2};

   let n = Object.create(m);

Тогда оба n и m являются объектами. Это означает, что вы можете использовать приведенные выше примеры для доступа к их свойствам.

1 голос
/ 20 июня 2020

Для доступа к свойствам объекта-прототипа используйте: Object.getPrototypeOf()

function testingSetValuetoInheritedProperty() {
     
   let m = {x:1,y:2};
   let n = Object.create(m);
     
   console.log(Object.getPrototypeOf(n).x)
}
testingSetValuetoInheritedProperty()
...