LearningRecord
LearningRecord copied to clipboard
JavaScript 采用原型继承,即一个对象继承自另外一个对象,另外一个对象再继承自别的对象,依此往复。请写一个通用的 JavaScript 函数,来找出某个对象身上的某个属性继承自哪个对象。
函数签名: function findPrototypeByProperty(obj, propertyName){ // 请实现函数体 } 使用举例: const foo = {a: 1}
const bar = Object.create(foo) bar.b = 2
const baz = Object.create(bar) baz.c = 3
console.log(findPrototypeByProperty(baz, "c") === baz) // true console.log(findPrototypeByProperty(baz, "b") === bar) // true console.log(findPrototypeByProperty(baz, "a") === foo) // true 参考答案: function findPrototypeByProperty(obj, propertyName) { do { if (obj.hasOwnProperty(propertyName)) { return obj } } while (obj = Object.getPrototypeOf(obj)) }