LearningRecord icon indicating copy to clipboard operation
LearningRecord copied to clipboard

JavaScript 采用原型继承,即一个对象继承自另外一个对象,另外一个对象再继承自别的对象,依此往复。请写一个通用的 JavaScript 函数,来找出某个对象身上的某个属性继承自哪个对象。

Open Rashomon511 opened this issue 5 years ago • 0 comments

函数签名: 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)) }

Rashomon511 avatar Aug 30 '19 02:08 Rashomon511