什么是JS原型链?【专栏06】
说明
今天的内容比较简单,但是也希望大家做个知识回顾。
原型链概念
原型链的核心就是依赖对象的_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 引擎会做下面的事情:
首先查找user 对象本身有没有 toString 方法属性。
因为的定义了,所以会输出
"鬼鬼永远18"
如果我把代码改成
function User(userName,userAge){
this.userName=userName;
this.userAge=userAge;
}
var user = new User("鬼鬼",18);
user.toString()
如果没有就继续查看user.proto 对象有没有 toString 方法属性
因为没有,没有就继续向上查找:user.proto.proto 对象有没有 toString 方法属性
因为user.proto.proto 有toString方法,这个方法为Object对象默认的,所以输出:
"[object Object]"
这个查找过程会一直持续到:找到 toString方法属性 或者 proto 为 null才会结束
就这个链式的查找的过程就叫做【原型链】
说明
本专栏总共汇总了
150道题
,每道题目答案没有多余扯皮的部分,就是单纯的答案。每天一到面试题,人人都能冲击
30k+
,点击↓关注【鬼哥】我当前进度【#006题】,如果你能点赞分享、鬼哥骑自行车也是开心的
评论