既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
🖥️ NodeJS专栏:Node.js从入门到精通
🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述)
🖥️ TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结)
🧑💼个人简介:大三学生,一个不甘平庸的平凡人🍬
👉 你的一键三连是我更新的最大动力❤️!
🏆分享博主自用牛客网🏆:一个非常全面的面试刷题求职网站,点击跳转🍬
文章目录
前言
向大家推荐一款博主一直在用的面试刷题求职网站:牛客网
牛客网不仅具有公司真题、专项练习、面试题库、在线编程等功能,还具有非常强大的AI模拟面试功能,简直是求职者的福音!
牛客网里的题库非常全面的,无论你是前端还是后端,是想要备考还是准备面试又或者是想要提高自己,你都能在牛客网上找到适合自己的题,赶快点击链接去注册登录吧:点击进入牛客网
牛客网 | 牛客网 |
---|---|
在这里插入图片描述 | 在这里插入图片描述 |
本篇文章所有示例参考自牛客网题库/在线编程/JS篇
。
1、手写new操作符
要求
补全JavaScript
代码,要求实现new
操作符的功能。
new 运算符介绍如下:
new
运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。
参数:
constructor
一个指定对象实例的类型的类或函数。arguments
一个用于被constructor
调用的参数列表。
new
关键字会进行如下的操作:
- 创建一个空的简单
JavaScript
对象(即{}
); - 为步骤 1 新创建的对象添加属性
__proto__
,将该属性链接至构造函数的原型对象(设置它的原型为构造函数的原型对象); - 将步骤 1 新创建的对象作为
this
的上下文; - 如果该函数没有返回对象,则返回
this
。
手撕代码
const \_new = function () {
// 补全代码
// 1. 创建一个空的简单 `JavaScript` 对象(即 `{}`);
// 2. 为步骤 1 新创建的对象添加属性 `\_\_proto\_\_`,将该属性链接至构造函数的原型对象(设置它的原型为构造函数的原型对象);
// 3. 将步骤 1 新创建的对象作为 `this` 的上下文;
// 4. 如果该函数没有返回对象,则返回 `this`。
const obj1 = {}; // 1
const Fn = arguments[0]; // 获取函数参数
Object.setPrototypeOf(obj1, Fn.prototype); // 2
const obj2 = Fn.apply(obj1, [].slice.call(arguments, 1)) // 3
return obj2 instanceof Object ? obj2 : obj1; // 4
}
[].slice.call(arguments, 1)
的作用是获得一个arguments
的拷贝数组,且该数组不含arguments
的第一个元素。
我们知道数组的
slice
方法能够截取原数组的部分内容(返回一个新数组,不会修改原数组),但参数数组arguments
是一个伪数组并不具有slice
这个方法,所以这里使用call
将[].slice
的this
指定到arguments
。
测试一下:
function Fn(age) {
this.name = 'Ailjx'
this.age = age
}
console.log('new', new Fn(18));
console.log('\_new', \_new(Fn, 18));
2、手写Object.freeze
要求
补全JavaScript
代码,要求实现Object.freeze
函数的功能且该新函数命名为"_objectFreeze
"
Object.freeze()函数介绍如下:
Object.freeze()
方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze()
返回和传入的参数相同的对象。
参数:
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新