什么是JS原型链?【专栏06】

前端人

共 1137字,需浏览 3分钟

 ·

2021-05-31 12:59

说明

今天的内容比较简单,但是也希望大家做个知识回顾。

原型链概念

原型链的核心就是依赖对象的_proto_的指向,当自身不存在的属性时,就一层层的扒出创建对象的构造函数,直至到Object时,就没有_proto_指向了。

比如我建了一个对象

function User(userName,userAge){
  this.userName=userName;
  this.userAge=userAge;
  this.toString=()=>{
     return `${this.userName}永远${this.userAge}`
  }
}

var user = new User("鬼鬼",18);
user.toString()

流程说明

当我们「读取」 user.toString 时,JS 引擎会做下面的事情:

  1. 首先查找user 对象本身有没有 toString 方法属性。

  2. 因为的定义了,所以会输出

"鬼鬼永远18"

如果我把代码改成

function User(userName,userAge){
  this.userName=userName;
  this.userAge=userAge;
}

var user = new User("鬼鬼",18);
user.toString()
  1. 如果没有就继续查看user.proto 对象有没有 toString 方法属性

  2. 因为没有,没有就继续向上查找:user.proto.proto 对象有没有 toString 方法属性

  3. 因为user.proto.proto 有toString方法,这个方法为Object对象默认的,所以输出:

"[object Object]"

这个查找过程会一直持续到:找到 toString方法属性 或者 proto 为 null才会结束

就这个链式的查找的过程就叫做【原型链】

说明

本专栏总共汇总了150道题每道题目答案没有多余扯皮的部分,就是单纯的答案。

每天一到面试题,人人都能冲击30k+,点击↓关注【鬼哥】

当前进度【#006题】,如果你能点赞分享、鬼哥骑自行车也是开心的

浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报