【颠覆旧知识】JS的原型链搜索原则;

最近准备面试,梳理以前的知识,发现我以前对原型链的搜索原则理解一直不完全对。

以前的理解:

"在当前对象未找到该属性,就一直向上查找,找到就停止并返回该数据,如果直到object的原型也没找到,就返回undefined ,如果是调用方法就报错, 该 xxxx 不是一个函数"


正确搜索原则:

在当前对象未找到该属性,就沿着原型链向上查找,找到就停止并返回该属性,

直到某个的原型的值为null都没找到该属性的话则终止,然后返回 undefined ,如果是调用方法就会导致报错, xx is not a function

案例:

Object.prototype.test1 = "芙莉莲";

function t1() {}

let a = new t1();

console.log(a, a.test1); >> "芙莉莲"

Object.setPrototypeOf(t1.prototype, null);

let b = new t1();

console.log(b, b.test1); >> undefined


没想到是在搜索过程中遇到原型的值为null时,就停止,并不是就会一直查找到Object的原型才停止;

虽然旧公司非常操蛋,工作氛围差,强迫加班,但领导的技术确实可以,对我有不小启发。现在找工作重新梳理知识才发现该问题。

相关推荐
Amos_Web7 小时前
Rspack 源码解析(二十九):CopyRspackPlugin 如何用 glob 把静态文件复制进产物
前端
铁皮饭盒7 小时前
刷到 FDE 岗位那一刻,我还以为前端又活了
前端·后端
酷炫码神8 小时前
Day 9|Vue Router:把单页后台拆成能跳转的多页面
前端·javascript·vue.js
Sapphire~8 小时前
odoo-095 视图的重写规则(全部重写还是部分改写)
开发语言·javascript·ecmascript
肖永威8 小时前
python版微电网仿真工具的前端托管选型:从http.server到FastAPI StaticFiles
前端·python·http·fastapi
风骏时光牛马8 小时前
AI插件开发与效能提效工具箱
前端
IT_陈寒8 小时前
为什么你应该学习Java?
前端·人工智能·后端
weixin_417396838 小时前
监控画面卡顿与录像缺失:码率、NVR与存储容量的排查顺序
前端·网络·技术·酒店·综合布线·弱电
曹牧9 小时前
Eclipse 工作空间(Workspace)的默认 JDK 配置
前端
其实防守也摸鱼10 小时前
Cylab在线靶场——挑战图书馆初学者指南
服务器·前端·数据库·chrome·安全·网络安全·靶场