目录
  1. 1. js 原型、原型链、构造器关系
    1. 1.1. 1.普通函数
    2. 1.2. 2.对象函数
    3. 1.3. 3.Function函数
    4. 1.4. 4.归于虚无
JS 原型、原型链、构造器关系

js 原型、原型链、构造器关系

写在前面

  • 已实例化的对象只有__proto__属性
  • 未实例化的对象有prototype和__proto__属性
  • 构造器是prototype对象的一个属性

上图
这里写图片描述
测试走起

1.普通函数

1
2
3
4
5
6
function A(x){
this.x=x;
}
console.log(A.prototype.constructor)//function A()
console.log(A.prototype.__proto__===Object.prototype)//true
console.log(A.__proto__===Function.prototype)//true
  • 函数原型(prototype)的构造器(constructor)指向构造函数自身
  • 函数原型的原型链(__proto__)指向Object的原型(prototype)
  • 函数对象的原型链指向Function(所有函数对象的爸爸)的原型
1
2
3
4
5
6
7
function A(x){
this.x=x;
}
var A1=new A(1);
console.log(A1.__proto__===A.prototype)//true
console.log(A1.__proto__.constructor)//function A()
console.log(A1.constructor)//function A()
  • 函数实例的原型链(__proto__)指向其构造函数的原型(prototype)
  • 函数实例的构造器就是其构造函数

2.对象函数

1
2
console.log(Object.prototype.constructor)//function Object()
console.log(Object.__proto__===Function.prototype)//true
  • 对象函数原型(prototype)的构造器(constructor)指向对象构造函数自身
  • 当然Function也是Object他爸
1
2
3
4
5
6
7
8
var obj=new Object();
obj={
a:'a',
b:'b'
}
console.log(obj.__proto__===Object.prototype)//true
console.log(obj.__proto__.constructor)//function Object()
console.log(obj.constructor)//function Object()
  • 对象的原型链(__proto__)指向对象函数的原型(prototype)
  • 对象的构造器(constructor)是对象函数

3.Function函数

1
2
3
console.log(Function.prototype.constructor)//function Function() 
console.log(Function.__proto__===Function.prototype)//true
console.log(Function.prototype.__proto__===Object.prototype)//true
  • Function的构造器(constructor)指向Function
  • Function的原型链(__proto__)指向Function的原型(prototype)
  • Function原型的原型链(__proto__)指向Object的原型(prototype)

    4.归于虚无

1
console.log(Object.prototype.__proto__===null)//true
  • Object原型(prototype)的原型链(__proto__)指向null
文章作者: Niko Yu
文章链接: https://www.nikoyu.asia/JS-%E5%8E%9F%E5%9E%8B%E3%80%81%E5%8E%9F%E5%9E%8B%E9%93%BE%E3%80%81%E6%9E%84%E9%80%A0%E5%99%A8%E5%85%B3%E7%B3%BB.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Niko Yu Blog
打赏
  • 微信支付
  • 支付宝
  • 私人微信

评论