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

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

相关推荐
KoPa14 小时前
HeySmart:大模型开源网关基座-请求生命周期与钩子引擎
前端·后端
悟空瞎说14 小时前
# Dispatch(GCD)苹果官方文档 白话文讲解(Objective‑C 版本文档)
javascript
七牛开发者14 小时前
Coding Agent 如何跑稳长任务?从上下文管理到运行时状态
前端·javascript·后端
半个落月15 小时前
从 CSR 到 Server Component:吃透 Next.js 16 App Router 路由、布局与 SEO
前端·next.js
七牛开发者15 小时前
拆解 DeepSeek Harness:Profile 与 Bundle 如何装配运行时
前端·javascript·后端
葡萄城技术团队15 小时前
表格智能体系列 · 1:一句话怎么变成一次表格操作
前端
梦曦i15 小时前
Vue-Router 2.4.0 新增可控重定向功能
前端·uni-app
deli00700715 小时前
Markdown 实时预览器:左边写右边看,排版效率翻倍
前端·ai编程
郑州光合科技余经理15 小时前
海外版外卖系统架构:订单怎么流转、权限怎么分
java·开发语言·前端·系统架构·uni-app·php·ai编程
pengyu16 小时前
【Kotlin 协程修仙录 · 炼虚境 · 初阶】 | 虚空造物:Channel 基础与协程间通信的管道艺术
android·前端·kotlin