2024年大数据最新【JavaScript】手撕前端面试题:手写new操作符 手写Object(1),2024中级大数据开发开发面试解答

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

🖥️ NodeJS专栏:Node.js从入门到精通
🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述)
🖥️ TypeScript知识总结:TypeScript从入门到精通(十万字超详细知识点总结)
🧑‍💼个人简介:大三学生,一个不甘平庸的平凡人🍬
👉 你的一键三连是我更新的最大动力❤️!
🏆分享博主自用牛客网🏆:一个非常全面的面试刷题求职网站,点击跳转🍬


文章目录

前言

向大家推荐一款博主一直在用的面试刷题求职网站:牛客网

牛客网不仅具有公司真题专项练习面试题库在线编程等功能,还具有非常强大的AI模拟面试功能,简直是求职者的福音!

牛客网里的题库非常全面的,无论你是前端还是后端,是想要备考还是准备面试又或者是想要提高自己,你都能在牛客网上找到适合自己的题,赶快点击链接去注册登录吧:点击进入牛客网

牛客网牛客网
在这里插入图片描述在这里插入图片描述

本篇文章所有示例参考自牛客网题库/在线编程/JS篇

1、手写new操作符

要求

补全JavaScript代码,要求实现new操作符的功能。


new 运算符介绍如下:

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。

参数:

  • constructor
    一个指定对象实例的类型的类或函数。
  • arguments
    一个用于被 constructor 调用的参数列表。

new 关键字会进行如下的操作:

  1. 创建一个空的简单 JavaScript 对象(即 {});
  2. 为步骤 1 新创建的对象添加属性 __proto__,将该属性链接至构造函数的原型对象(设置它的原型为构造函数的原型对象);
  3. 将步骤 1 新创建的对象作为 this 的上下文;
  4. 如果该函数没有返回对象,则返回 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[].slicethis指定到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() 返回和传入的参数相同的对象。

参数:

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值