龙空技术网

JavaScript 中 __proto__ 和 prototype

Ashine33 121

前言:

当前看官们对“jsproto”大体比较着重,小伙伴们都想要了解一些“jsproto”的相关内容。那么小编同时在网络上汇集了一些关于“jsproto””的相关知识,希望姐妹们能喜欢,我们一起来了解一下吧!

var obj = {}

// 等价于 var obj = new Object()

// object.__proto__ === Object.prototype

obj.toString()

// 创建一个新的Object ,即 变量obj

// obj 变量指向一个空对象,这个空对象有个 __proto__ 属性指向 window.Object.prototype。

prototype 指向一块内存,这个内存里面有共用属性

__proto__ 指向同一块内存

prototype 和 __proto__ 的不同点在于:

prototype 是构造函数的属性,而 __proto__ 是对象的属性

难点在于……构造函数也是对象!

如果没有 prototype,那么共用属性就没有立足之地

如果没有 __proto__,那么一个对象就不知道自己的共用属性有哪些。

// 创建一个对象

var object = {}

// 对象的原型 = 对象的原型

object.__proto__ === Object.prototype

// 创建一个函数

var fn = function () { }

// 函数的原型 = 函数的原型

fn.__proto__ === Function.prototype

// 函数的原型的原型 = 对象的原型

// 函数的原型=对象 对象的原型 = 对象的原型

fn.__proto__.__proto__ === Object.prototype

每个对象都有原型

对象的原型也是对象

原型的原型 = null

只要是函数对象,构造函数就是Function,包括(window.Object)

以上仅为个人观点,若有理解错误,欢迎指出一起学习~

标签: #jsproto