作用:
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对象。
-
function定义的函数对象的
__proto__
属性指向Function对象的prototype对象。 - 非function定义的对象的
__proto__
属性指向创建它的构造函数的prototype对象。(就是都指向Object的prototype对象) -
Object的prototype对象的
__proto__
指向null。
```
//就像一个链条(分支)一样
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
网友评论