JavaScript原型相关知识,很久以前学习过一次,后来慢慢的就忘了,这次又学习了一次,总结一下加深记忆,便于下次快速学习

总结

  • 除去四种基本的值类型(undefined, number, string, boolean),一切皆是对象
  • 所有对象都是通过函数创建的,同时函数也是一种对象
  • 每个函数都有一个都有一个属性prototype,这个属性指向一个对象,该对象也都有一个属性constructor,指向函数本身
  • 每个对象也都有一个属性__proto__,指向创建该对象的函数的prototype
  • Object.prototype__proto__指向null

一些代码帮助理解上述结论

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function fn () {}

fn.prototype.constructor === fn // true

const obj = new fn()
obj.__proto__ === fn.prototype // true

const obj2 = {}
obj2.__proto__ === Object.prototype // true

fn.__proto__ === Function.prototype // true
Function.__proto__ === Function.prototype // true
Function.prototype.__proto__ === Object.prototype // true

Object.__proto__ === Function.prototype // true
Object.prototype.__proto__ === null // true

参考

https://www.cnblogs.com/wangfupeng1988/p/3977924.html