2024年最新【JavaScript】手撕前端面试题:手写new操作符 手写Object,2024年最新大厂首发
创建一个空的简单JavaScript对象(即{})。 为新创建的对象设置__proto__属性,将其链接至构造函数的原型对象。 将新对象作为this的上下文。 如果函数没有返回对象,则返回this。
发布日期:2025-06-20 13:47:56
浏览次数:13
分类:精选文章
本文共 1345 字,大约阅读时间需要 4 分钟。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
1. 手撕代码:理解new关键字
在JavaScript中,new关键字用于创建对象。它通过以下步骤工作:
以下是手撕代码的实现:
const _new = function () { const Fn = arguments[0]; const obj1 = {}; Object.setPrototypeOf(obj1, Fn.prototype); const obj2 = Fn.apply(obj1, [].slice.call(arguments, 1)); return obj2 instanceof Object ? obj2 : obj1;}; 2. 手写Object.freeze
实现一个功能类似Object.freeze的函数 _objectFreeze,用以冻结对象。
const _objectFreeze = object => { if (typeof object !== 'object' || object === null) { throw new TypeError('the object is not a object'); } const keys = Object.getOwnPropertyNames(object); const symbols = Object.getOwnPropertySymbols(object); [...keys, ...symbols].forEach(key => { Object.defineProperty(object, key, { writable: false }); }); Object.seal(object); return object;}; 知识点回顾
Object.getOwnPropertyNames()返回对象的所有自身属性,包括不可枚举属性。Object.getOwnPropertySymbols()返回对象的所有Symbol属性。Object.defineProperty()用于定义或修改对象的属性。Object.seal()使对象不可扩展且属性不可配置。Object.preventExtensions()仅阻止添加新属性,不改变属性的可配置性。
结语
这些技术细节的理解和实践,将帮助你在JavaScript开发中更好地掌握对象的创建与管理。记住,技术提升需要系统的学习和不断的实践!
发表评论
最新留言
很好
[***.229.124.182]2026年05月23日 08时42分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php一句话图片运行,【后端开发】php一句话图片木马怎么解析
2023-02-28
php上传文件找不到临时文件夹
2023-02-28
PHP下curl用法分析
2023-02-28
php与web服务器关系
2023-02-28
redis事务操作
2023-02-28
PHP中array_merge和array相加的区别分析
2023-02-28
PHP中dirname(__FILE__)的意思
2023-02-28
PHP中extract()函数的妙用
2023-02-28
PHP中implode()和explode()
2023-02-28
PHP中serialize和json序列化与反序列化的区别
2023-02-28
Redis事务处理
2023-02-28
php中使用ajax进行前后端json数据交互
2023-02-28
Redis事务和锁操作
2023-02-28
PHP中如何得到数组的长度
2023-02-28
php中引入文件几种方式的区别
2023-02-28
PHP中把stdClass Object转array的几个方法
2023-02-28
PHP中替换换行符
2023-02-28
PHP中有关正则表达式的函数集锦
2023-02-28
Redis 集群搭建详细指南
2023-02-28
php中的cookie用法
2023-02-28