js-对象原型及原型链

原型链

1、自定义函数

构造函数User的实例person的隐式原型指向构造函数原型

  function User() {
    this.age = 18;
    this.sex = '男'
  }
  const person = new User()
  console.log(person.__proto__ === User.prototype); // true

2、Object函数 (js内置构造函数)

1、类似Object这样的内置构造函数还有很多,如Date、Array、String等
2、构造函数Object用于创建普通对象,其实例隐式原型指向构造函数Object原型
3、自定义函数原型也是一个对象,其隐式原型指向构造函数Object原型

 const o = new Object()  
  o.age = 18;
  o.sex = '男';   // 等同 const a = { age:18, sex:'男' }
  console.log(o.__proto__ === Object.prototype);  // true

  const person = new User()
  console.log(person.__proto__ === User.prototype); // true
  
  const person2 = new Object()
  console.log(User.prototype.__proto__ === Object.prototype);  // true

3、Function函数

1、由Function函数实例化出来的函数也是对象,其隐式原型指向Function原型
2、所有的构造函数(如Object、自定义函数、Array)也是对象,他们的隐式原型全都指向Function的原型;

  const fuc = new Function()
  console.log(fuc.__proto__ === Function.prototype);  // true
  console.log( Object.__proto__ === Function.prototype);   // true

4、原型链关系

1、查找关系:查找一个属性在不在某个对象上,先找对象实例,实例身上有该属性则先找自身,实例身上没有则从构造函数的原型上找;
2、关系链:
a、自定义函数实例的隐式原型指向自定义函数原型;
b、自定义函数原型也是一个对象,其隐式原型指向Object原型;
c、Object原型又是一个对象,其隐式原型指向null;
d、所有的构造函数(如Object、自定义函数、Array)也可以看做对象,他们的隐式原型全都指向Function的原型;
e、所有构造函数的原型也是实例对象,其隐式原型指向Object原型
f、Function的隐式原型指向Function的原型(特殊)

5、原型链图

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值