Skip to content

Instantly share code, notes, and snippets.

@ThaddeusJiang
Created October 27, 2017 07:02
Show Gist options
  • Save ThaddeusJiang/684a43e464d0d53135f76beef9fea1e5 to your computer and use it in GitHub Desktop.
Save ThaddeusJiang/684a43e464d0d53135f76beef9fea1e5 to your computer and use it in GitHub Desktop.
JS 继承和原型链

JS 是原型继承,因为它是动态的。 虽然ES6 引入class关键字,但只是语法糖,JavaScript 仍然是基于原型的。

原型继承导致JS的调用是沿着原型链(prototype chain)遍历进行的。

e.g.

如果对象 a = {var1: 1, var2: 2},而 a 的原型 b = {var2: 20000, var3: 3},那么:

console.log(a.var1) // 1
console.log(a.var2) // 2
console.log(a.var3) // 3 “因为当前对象内没有,所以沿着原型链寻找,直至null结束”
console.log(a.var4) // undefined

遍历整个原型链是非常浪费的,可以使用 hasOwnProperty 判断。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment