更新2021-7-15
如圖所示 當我們a.a 或者 c[‘c’]的時候 有值 那麼可能來自哪裡了
let foo = {a:12}
var bar = Object.create(foo) // 建立對象 繼承foo通過原型的方式
bar.b =21
21
bar.a
12
Object.getPrototypeOf(bar)
// 擷取變量原型對象 也可以通過如下方法判斷原型對象屬性
// 因為原型對象也存在 hasOwnProperty 方法
{a: 12}
bar.hasOwnProperty('b') // 判斷自身是否存在屬性
true
Object.getPrototypeOf(bar) === foo // 判斷原型是誰
true
let c = {a:1}
c.__proto__ = foo
{a: 12}
Object.getPrototypeOf(c) === foo
true
for in 循環判斷 是包含了對象的自身與原型對象
for(a in bar) {console.log(a)}
VM1216:1 b
VM1216:1 a
Object.keys(bar)
["b"]
Object.getOwnPropertyNames(bar)
["b"]