目录

Js中的构造函数的prototype属性与实例的 proto 与constructor属性

# Js中的构造函数的prototype属性与实例的_ proto _与constructor属性

# 1.__ proto __ 原型链引用属性

注意proto两边的下划线是由两个下划线(_)组成,它的作用是当访问一个该对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个原型对象查找,一直向上查找直到找到为止,找不到则是null。查找的过程其实就是原型链的展示。__ proto __ 是对象独有的,但在js中函数其实也是一个对象,所以也有__ proto __ 属性。

 let fn= function () {};//一个叫obj构造函数
    let second = {};//一个second空对象
    let first = new  fn();//通过new创建实例
    second.__proto__ = first;//把second的原型链引用指向first
    // 判断该对象的原型链引用是否属于first
    console.log(second.__proto__ === first);// true
    console.log(second.__proto__);//打印出fn {}
1
2
3
4
5
6
7
8
9

# 2.prototype 原型对象属性

这种属性是函数独有的,它指向通过这个函数new的实例中的__ proto __ 属性。任何函数在创建的时候,其实会默认同时创建该函数的prototype对象。

let fn= function () {};//一个叫obj构造函数
    let second = {};//一个second空对象
    let first = new  fn();//通过new创建实例
    second.__proto__ = fn.prototype;//将fn函数的prototype 原型对象属性传给second的原型引用。
    // 判断该对象的原型链引用是否一样
    console.log(second.__proto__ === first.__proto__);// true
    // 判断该原型对象是否与实例的原型引用一样
    console.log(second.__proto__ === fn.prototype);// true
    console.log(first.__proto__ === fn.prototype);// true
1
2
3
4
5
6
7
8
9
10
11

# 3.constructor属性

constructor属性是在原型对象prototype里面的属性,它是构造函数,与通过该构造函数创建的实例之间联系的桥梁。创建对象的前提是需要有constructor。而实例中有constructor,是因为在原型链中继承的。

3.constructor属性 constructor属性是在原型对象prototype里面的属性,它是构造函数,与通过该构造函数创建的实例之间联系的桥梁。创建对象的前提是需要有constructor。而实例中有constructor,是因为在原型链中继承的。

function fn() {}
var obj=new fn()
console.log(obj.constructor===fn.prototype.constructor);//true
上次更新: 2022/05/12 14:57:53
最近更新
01
关于我
07-14
02
科学上网
11-15
03
OSS+CDN
09-23
更多文章>
极昼青春
买辣椒也用券