2024年Web前端最全【面试题】 JS手写ES6的Object,35岁程序员

总结

为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

前端面试题汇总

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

JavaScript

性能

linux


有关Object.defineProperties()的具体细节请看我的这篇文章:[戳我传送](https://bbs.csdn.net/topics/618166371)


Object.create 返回值:一个新对象,带着指定的原型对象及其属性。


**使用Object.create(null)的原因**


很多框架源码作者使用它来初始化一个新的对象,难道是最佳实践?



> 
> 通过Object.create(null)创建出来的对象,没有任何属性,显示No properties。我们可以将其当成一个干净的 map 来使用,自主定义 toString,hasOwnProperty等方法,并且不必担心将原型链上的同名方法被覆盖。
> 
> 
> 


**注意:** {...}创建的对象,使用for in遍历对象的时候,会遍历原型链上的属性,带来性能上的损耗。使用Object.create(null)则不必再对其进行遍历了。


框架源码对性能的要求极高,哪怕是一点点,都值得关注。


## 开始手写



// 第一个参数传递null时,返回的实例原型为null
// 第一个参数类型只能是object、function或者null,否则报错。
// 第二个参数类型,不能是null,否则报错
// 第二个参数如果不为 undefined ,需要将其挂载到实例的 Object.defineProperties 上。

Object.mjy_create = function(proto, defineProperties) {
if ( typeof proto !== ‘object’ && typeof proto !== ‘function’ ) {
throw new TypeError(Object prototype may only be an Object or null: ${proto})
}
if ( defineProperties === null ) {
throw new TypeError(‘Cannot convert undefined or null to object’)
}

// 定义新对象 
  const obj = {}

  // 设置原型
  // obj.__proto__ = proto // 不建议这么做了
  // 通常,应该使用 Object.setPrototypeOf() 方法来设置对象的原型。
  // 因为 Object.prototype.__proto__ 访问器已被弃用。
   Object.setPrototypeOf(obj, proto) // 建议使用setPrototypeOf设置原型

if ( defineProperties !== undefined ) {
  Object.defineProperties(obj, defineProperties)
}
return obj

}
let obj1={b:2}
let obj2 = Object.mjy_create(obj1, { a: { enumerable: false } })
console.log(obj2)//{}
let obj2_ = Object.mjy_create(obj1, { a: { enumerable: true } })
console.log(obj2_)//{ a: undefined }
let obj3 = Object.create(‘222’, undefined) // TypeError: Object prototype may only be an Object or null: 222
let obj4 = Object.create(obj1, null) // TypeError: Cannot convert undefined or null to object
console.log(obj2.a) // undefined


 


## 给大家推荐一个实用面试题库


#### **1、前端面试题库 (**面试必备) ****推荐:★★★★★****



### 总结

为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师面试手册》电子稿文件。

内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。



包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

![](https://i-blog.csdnimg.cn/blog_migrate/8174e3fb301b20f2bd0722181a16cbbe.png)

![](https://i-blog.csdnimg.cn/blog_migrate/f2477d2817dbbd9536dcec7a21447dbb.png)

**前端面试题汇总**

![](https://i-blog.csdnimg.cn/blog_migrate/0e3e725c2b52c0d80cc380a18efe5fd9.png)

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

**JavaScript**

![](https://i-blog.csdnimg.cn/blog_migrate/9320ddadc20aa9901f6059017c06bce9.png)

**性能**

![](https://i-blog.csdnimg.cn/blog_migrate/80f436616b3456a1e3fabb96c355d408.png)



**linux**

![](https://i-blog.csdnimg.cn/blog_migrate/9ddd13c78eef6f7bdd7d52f641a2ff76.png)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值