JS原型

34 阅读1分钟

下面我将给出一些有关JS原型的知识,我实在是讲不清,只能一条条的列举出来。

1、任何JavaScript对象都有__proto__属性。

2、函数对象(即函数)除了__proto__,还有prototype属性。

3、一组由同一种对象创建方式创建的对象,它们的__proto__属性是相同的,即都指向它们构造函数对象上的prototype属性,因此要想为某个构造函数创建的实例对象添加共用的方法,可以直接给构造函数的prototype上添加,JS引擎会顺着实例对象的__proto__属性往上找,这也许就是所谓的原型链的作用

上面提到的对象创建方式有两种:

  • 字面量
  • 构造函数

代码示例:

// 获取__proto__的两种方式:xxx.__proto__ 和 Object.getPrototypeOf(xxx)
const u1 = {}
const u2 = {}
console.log(u1.__proto__ === Object.getPrototypeOf(u2)) // true

4、函数对象的prototype属性指向的是一个对象,因此函数对象的prototype属性也有一个__proto__属性

5、无继承情况下,函数对象的__proto__指向的都是Function.prototype

6、Function对象比较特殊,它的__proto__属性和prototype属性指向的是同一个对象。

6、函数的prototype属性,是在函数声明时,由JS引擎为函数添加的

Snipaste_2025-02-24_16-43-08.png