为了账号安全,请及时绑定邮箱和手机立即绑定

【金秋打卡】第9天 从函数到函数式编程之路

标签:
JavaScript

课程名称:破解JavaScript高级玩法
课程章节:第6章 从函数到函数式编程之路
主讲老师:Cloud

课程内容:

今天学习的内容包括:
6-11 手写call居然隐藏十大知识点——call在严格模式和非严格模式情况下的不同情况的知识点了解。
6-12 综合训练

课程收获:

手写call知识点
  • eval
  • new Function
  • 内容安全策略CSP
  • 属性冻结
  • 对象属性检查
  • 面试感知
  • ECMA规范和浏览器厂商之间的爱恨情仇
  • undefined
  • —元运算符void
  • 数据类型判断
  • 严格模式和非严格模式
  • this
  • 运行环境识别
  • 一元运算符delete
  • 函数副作用
手写的思路
  • 某个方法进行call调用时,等同于把方法作为call的第一个参数某个属性,并进行进行调用。
  • fun.call(obj, …args) === ( obj.fun= fun; obj.fun(…args) )
版本2存在的问题
  • this是不是可以被调用
  • undefined安不安全
  • window作为默认上下文,过于武断
  • eval一定会被允许执行吗
  • delete context.fn有没有产生副作用
不可靠的undefined
  • 有可能被改写
  • void 0
环境识别
  • 浏览器环境
  • nodejs环境
  • 综合判断
严格模式
  • 是否支持严格模式
  • 是否处于严格模式
函数副作用
  • 函数调用后,破坏了原对象
基于eval的实现
  • 有没有严格模式
  • 支不支持严格模式
  • 获取全局对象
  • 判断是不是函数
  • 包装上下文
  • 生成属性名
  • 拼接动态参数
基于eval的实现
  • 严格模式下的妥协
  • 属性名依旧是可能重名
  • eval可能被禁用
基于new Function的实现
  • 动态参数
  • 对象可能被冻结,Object.freeze
课后练习
  • 如果有效的判断被执行的函数是否在严格模式下执行
  • 请解决传入的thisArg被冻结的问题

今天 学习了手写call居然隐藏十大知识点,这些底层属性点相关的知识点掌握还是不够的,自己听着也是很迷糊,不知道有什么用处,还是要多学多用。对自己说一句,加油😀~

坚持打卡,坚持学习!明天见💪~

https://img1.sycdn.imooc.com//6360d2910001028f24991344.jpg

https://img1.sycdn.imooc.com//6360d975000185f925321364.jpg

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消