Свойство __proto__ — это геттер/сеттер

Подскажите,как понять, что __proto__ - это геттер и сеттер. obj.__proto__ вызывается соответствующий геттер/сеттер из прототипа obj. Какая механика этого процесса, никак не пойму этот принцип.

__proto__ - свойство, которое дает доступ к методам объекта прототипа, а как оно работает как аксессор в прототипе?


Ответы (1 шт):

Автор решения: Qwertiy

function check(obj) {
  for (var x = obj; x; x = Object.getPrototypeOf(x)) {
    var d = Object.getOwnPropertyDescriptor(x, "__proto__")
    
    if (d) {
      console.log(x === Object.prototype, d)
      return
    }
  }
  
  console.log("Not found")
}

check({})
check(Object.create(null))
check({ __proto__: {} })
check({ ["__proto__"]: {} })
check({ __proto__: null })
check({ get __proto__() { return 1 } })
check({ get __proto__() { return 1 }, set __proto__(v) {} })
.as-console-wrapper.as-console-wrapper { max-height: 100vh }

→ Ссылка