首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/650901

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

javascript中的this使用场景以及箭头函数中的this

this总是指向一个对象,有时指向全局对象,有时指向构造对象,有时指向DOM对象 1. 作为对象的方法调用 做为对象的方法调用时this指向对象本生 2. 作为普通函数被调用 普通函数里的this总是指向全局变量 对象的方法复制给变量,在通过变量来调用后对象的方法变成了普通函数 观看这个例子发现: getName1 = Person.getName 是把getName1指向Person.getName方法的内存地址(方法本身没有被执行),其本质是个函数,所以在使用getName1() 时就是调用普通函数 getName2 = Person.getName() 是把Person.getName的返回值(已经执行了)bingxl赋值给getName2 对两个变量经行typeof操作 3. DOM事件触发函数里的this DOM事件触发函数里的this指向DOM节点本身 test() 是一个普通函数,所以test里的this指向了全局对象window 4. 构造器调用 使用new运算符调用构造函数时会返回一个对象,构造函数里的this一般就指向返回的对象 当构造函数使用return显式的返回...

call、apply、bind方法的实现

先分析下3个方法的作用 改变this的指向。 传入参数。 call apply返回函数结果, bind 返回新函数 一、call方法的实现 改变this指向 首先我们知道,对象上的方法,在调用时,this是指向对象的。 知道了这一点我们就可以实现改变this的指向 测试 现在,改变this的值,实现了 最简单实现es6 二、apply方法的实现 其实apply和call差不多,没什么大区别 利用已经写好的myCall来实现 不用myCall 测试 效果没区别 三、bind方法的实现(利用call方法实现) 首先我们可以通过给目标函数指定作用域来简单实现bind()方法: 考虑到函数柯里化的情况,我们可以构建一个更加健壮的bind(): 这次的bind()方法可以绑定对象,也支持在绑定的时候传参。 继续,Javascript的函数还可以作为构造函数,那么绑定后的函数用这种方式调用时,情况就比较微妙了,需要涉及到原型链的传递: 这是《JavaScript Web Application》一书中对bind()的实现:通过设置一个中转构造函数F,使绑定后的函数与调用bind()的函数处于同一原...

相关文章

发表评论

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。