当前位置: 首页 > news >正文

【前端面试手撕题】call、bind、new、freeze、浅拷贝

FED11 _call函数

描述
请补全JavaScript代码,要求实现Function.call函数的功能且该新函数命名为"_call"。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><style>/* 填写样式 */</style>
</head><body><!-- 填写标签 --><script type="text/javascript">// 填写JavaScriptFunction.prototype._call=function(target=window){target['fn']=thisconst result=target['fn']([...arguments].shift())delete target['fn']return result}</script>
</body></html>

FED12 Function.bind

描述
请补全JavaScript代码,要求实现Function.bind函数的功能且该新函数命名为"_bind"。

<!DOCTYPE html>
<html><head><meta charset=utf-8></head><body><script type="text/javascript">// 补全代码Function.prototype._bind = function(target, ...arguments1) {   target['fn']=thisreturn function(...arguments2){return target['fn'](...arguments1.concat(arguments2))}}</script></body>
</html>

FED13 实现new操作符

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

<!DOCTYPE html>
<html><head><meta charset=utf-8></head><body><script type="text/javascript">const _new = function() {// 补全代码const object1={}const Fn=[...arguments].shift()object1.__proto__=Fn.prototypeconst object2=Fn.apply(object1,arguments)return object2 instanceof Object?object2:object1}</script></body>
</html>

FED14 Object.freeze

描述
请补全JavaScript代码,要求实现Object.freeze函数的功能且该新函数命名为"_objectFreeze"

<!DOCTYPE html>
<html><head><meta charset=utf-8></head><body><script type="text/javascript">const _objectFreeze = object => {// 补全代码Object.preventExtensions(object);for(let key in object){if(object.hasOwnProperty(key)){Object.defineProperty(object,key,{writable:false,configable:false})}}return object}</script></body>
</html>

FED15 浅拷贝

描述
请补全JavaScript代码,要求实现一个对象参数的浅拷贝并返回拷贝之后的新对象。
注意:

  1. 参数可能包含函数、正则、日期、ES6新对象
<!DOCTYPE html>
<html><head><meta charset=utf-8></head><body><script type="text/javascript">const _shallowClone = target => {// 补全代码if(typeof target==='object'&&target!=='null'){let a=Array.isArray(target)?[]:{};for(let i in target){a[i]=target[i];}return a;}else{return target;}}</script></body>
</html>
http://www.lryc.cn/news/110695.html

相关文章:

  • MacBook Pro 16 M1 Max 升级 macOS Ventura 13.5 兼容测评
  • 实现5*5正方形网格x轴和y轴显示对应数值组件封装
  • 基于Matlab实现图像压缩技术(附上完整源码+图像+程序运行说明)
  • 棒球联盟对于市场发展规划·棒球1号位
  • ansible控制主机和受控主机之间免密及提权案例
  • flink1.17 eventWindow不要配置processTrigger
  • Python导出SqlServerl数据字典为excel
  • PB:DDE服务器函数
  • awk经典实战、正则表达式
  • Python脚本-时间盲注
  • 面试总结-Redis篇章(十)——Redis哨兵模式、集群脑裂
  • el-table那些事
  • kubernetes(一)
  • 计算机网络(6) --- https协议
  • (三)Node.js - 模块化
  • 502 bad gateway报错
  • Flink学习教程
  • flutter开发实战-实现音效soundpool播放音频及控制播放暂停停止设置音量
  • Sequence 2023牛客暑期多校训练营6 E
  • 【ASP.NET MVC】使用动软(二)(10)
  • STM32入门学习之独立看门狗(IWDG)
  • 抖音seo矩阵系统源码搭建开发详解
  • 2685. 统计完全连通分量的数量;2718. 查询后矩阵的和;1600. 王位继承顺序
  • SpringBoot统一功能处理(AOP思想实现)(统一用户登录权限验证 / 异常处理 / 数据格式返回)
  • git stash 用法
  • 生鲜蔬果小程序的完整教程
  • De Bruijin序列与魔术(二)——魔术《De Bruijin序列》
  • ARCGIS地理配准出现的问题
  • redis原理 6:小道消息 —— PubSub
  • Android Studio 的Gradle版本修改