原型链

2018-12-28  本文已影响0人  南方帅

作用: javascript在存储对象的时候,使用原型链来实现对象共享内存,方便查询和管理对象

  Object ;
  const obj = {test:123}
  obj.toString()  // [Object Object]
  obj.constructor()  // Object()
  //    obj 的这些方法都是原来存在于Object 分支上面的
  //  

这样 一些方法就可以共用 不必单独声明 占内存空间, 层级关系也更好梳理 那层级关系是怎样的呢


找妈妈
一切皆函数 一切皆对象

起源 从 null 到有根源Object, 从根源Object 在到 内置Function 再到 Object Function String Array Number Boolean....再到 'hello world', 123,....
ps:注意到null, undefined没有构造方法, Function Math有点特殊

Native Code 已被编译为特定于处理器的机器码的代码。这些代码可以直接被虚拟机执行。

结论观点

每一个对象都有一个__proto__属性(指针),该属性指向创建这个对象的构造函数的prototype对象。
```
//就像一个链条(分支)一样
obj.__proto__ == Object.prototype  等效于 obj instanceof Object 等效于 Object.prototype.isPrototypeOf(ob3)
// Function 和 Object
Function instanceof Object  // true
Object instanceof Function  // true
// Object也是函数.因为Object的结构是function Object(){native code}. 更深处浏览器知识
```
每一个函数对象都有一个prototype属性,该属性指向其prototype对象。
```
  const fct = () => {console.log(123)}
  fct.__proto__ //  ƒ () { [native code] 
  fct.prototype  // undefined
```
image.png

参考阅读: (https://www.jianshu.com/p/b745c5481fab)

上一篇 下一篇

猜你喜欢

热点阅读