Javascript-原型与原型链

简单介绍

JavaScript 每个对象都拥有一个原型对象,对象以其原型为模板从原型中继承方法和属性;

原型对象也可能拥有原型,并从中继承方法和属性;一层一层、以此类推,而由这种关系组成的一条链,我们常称为原型链。

准确地说,这些属性和方法定义在 Object 的构造器函数 constructor 的prototype属性上,而非对象实例本身。

原型

在javascript中,函数可以有属性。并且每个函数都有一个特殊的属性[[Prototype]]叫作原型。

-所有的引用类型(函数,数组,对象),都有一个__proto__的属性, 我们习惯称之为隐式原型;(__proto__并不是规范属性,只是部分浏览器实现了此属性)

-所有的函数都具有一个prototype的属性,我们习惯称之为显式原型;

  • 所有的引用类型(函数,数组,对象),其 __proto__ 属性都指向其构造函数的 prototypeobj.__proto__ === Object.prototype);

-拥有prototype属性的对象,在定义函数时就被创建(原型对象)。


function Foo() {}

const foo = new Foo()

foo.__proto__ === Foo.prototype // true

原型链

原型链就是原型的集合,一级一级地往上查找,直到 Object 的原型对象的原型(null);


function Foo() {}

const foo = new Foo()

Object.prototype.test = function() {}

console.log(foo.test) // ƒ () {}

// 此时访问 foo 的 test 方法的历程是

foo.__proto__ === Foo.prototype // true

Foo.prototype.__proto__ === Object.prototype // true

foo.test === Object.prototype.test

Foo.__proto__ === Function.prototype // true

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

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

Function.__proto__ === Function.prototype // true

从上面我们可以看出,函数对象的 __proto__ 指向 Function.prototype

与此相同的还有:


Number.__proto__ === Function.prototype  // true

Number.constructor === Function //true

Boolean.__proto__ === Function.prototype // true

Boolean.constructor === Function //true

String.__proto__ === Function.prototype  // true

String.constructor === Function //true

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

Object.constructor === Function // true

Function.__proto__ === Function.prototype // true

Function.constructor === Function //true

Array.__proto__ === Function.prototype  // true

Array.constructor === Function //true

RegExp.__proto__ === Function.prototype  // true

RegExp.constructor === Function //true

Error.__proto__ === Function.prototype  // true

Error.constructor === Function //true

Date.__proto__ === Function.prototype    // true

Date.constructor === Function //true

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容