【颠覆旧知识】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的原型才停止;

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

相关推荐
hxy060114 小时前
React-Call让你的React组件像异步函数一样调用
前端·react.js
Hilaku14 小时前
为什么 AI 写前端时,总是优先选择 React,而不是 Vue?
前端·javascript·程序员
京东云开发者14 小时前
GPT-5.6、ChatGPT Work 与 Codex 更新食用指南
前端
Cao_Ron14 小时前
用 ECharts graph 画出卡片式矩形节点
前端
skiyee14 小时前
换个底座的 Wot Starter 居然让 AI 更懂项目!
前端·ai编程
anyup14 小时前
这一套绝了!AI 大模型写故事,星云 SDK 驱动 3D 数字人实时演绎
前端·人工智能·aigc
耀耀切克闹灬15 小时前
短链跳转
前端
孟陬15 小时前
高质量全方位的 AI 工具 sse-stuntman — Mock SSE 接口
前端·node.js·openai
Cao_Ron15 小时前
给 ECharts 6 graph 节点叠加角标:从原理到性能优化
前端
WebGirl15 小时前
内网穿透方式
前端