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

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

相关推荐
风骏时光牛马12 分钟前
AIAgent高可用架构:弹性容错与故障自愈的落地实践
前端
IT_陈寒20 分钟前
Vue的响应式什么时候会失灵?这个坑我踩了
前端·人工智能·后端
烟锁池塘柳033 分钟前
解决 Firefox 浏览器网页文本选中高亮不明显问题(含仅修改特定网站高亮显示的方案)
前端·firefox
Patrick_Wilson34 分钟前
Web 认证方案技术指南
前端·后端·面试
YuJie1 小时前
JSBridge 基础知识
前端·javascript
BigTopOne1 小时前
Ubuntu 虚拟机编译 WebRTC Android AAR(M140 / branch-heads/7339)
前端
默_笙1 小时前
🍕 后端接口还没写好,前端已经跑起来了?Mock 数据 + axios 接口层,前后端再也不互相"等"
前端·javascript
书源1 小时前
AI 时代写给前端同行:什么在贬值,什么在涨价
前端·程序员·ai编程
爱勇宝2 小时前
客户只想看个页面,我却做了一个静态演示发布系统
前端·javascript·后端
渔夫正在掘金2 小时前
告别构建时代:为什么 AI 编程浪潮正让 Vue 与 React 走向落后?
前端