js bind()(js什么时候用bind绑定this)

2024-07-15 06:22:55 15

js bind()(js什么时候用bind绑定this)

本文目录

js什么时候用bind绑定this

在JavaScript中,我们经常用到函数绑定,而当你需要在另一个函数中保持this上下文时,使用Function.prototype.bind()会很方便.var myObj = {specialFunction: function () {},anotherSpecialFunction: function () {},getAsyncData: function (cb) {cb();},render: function () {var that = this;this.getAsyncData(function () {that.specialFunction();that.anotherSpecialFunction();});}};myObj.render();为了保持myObj上下文,设置了一个变量that=this,这样是可行的,但是没有使用Function.prototype.bind()看着更整洁:render: function () {this.getAsyncData(function () {this.specialFunction();this.anotherSpecialFunction();}.bind(this));}

关于原生js中bind函数的简单实现

今天继续研究了bind函数的实现,也知道了shim和polyfill的说法,现在总结一下,if(!Function.prototype.bind){Function.prototype.bind=function(oThis){if(typeofthis!=="function"){//closestthingpossibletotheECMAScript5internalIsCallablefunctionthrownewTypeError("Function.prototype.bind-whatistryingtobeboundisnotcallable");}varaArgs=Array.prototype.slice.call(arguments,1),fToBind=this,fNOP=function(){},fBound=function(){returnfToBind.apply(thisinstanceoffNOP&&oThis?this:oThis||window,aArgs.concat(Array.prototype.slice.call(arguments)));};fNOP.prototype=this.prototype;fBound.prototype=newfNOP();returnfBound;};}这是官方文档上的实现,我分二个方面来谈我要说的东西,第一个是参数,agruments的使用varaArgs=Array.prototype.slice.call(arguments,1),这里是将bind函数的参数数组取出来,第一个参数不要(就是不要oThis)也就是要被绑定方法的那个对象,第二个是aArgs.concat(Array.prototype.slice.call(arguments)));这里是用了数组的方法,把参数插在参数数组后面,要注意,这个函数是要被return出去然后执行的,他的参数数组是return出去的那个fBound函数的参数数组,所以上下两个参数数组是不一样的,有点像柯里化。第二个是上下文,在其中上下文的变化比较难理解,bind函数主要就是为了绑定上下文来使用的fToBind=this这里是保存了对象的上下文,紧接着下面的apply方法让要被绑定的那个对象可以使用该上下文fNOP.prototype=this.prototype;fBound.prototype=newfNOP();这里是以fNOP为中介把this.prototype这个原对象的属性给fBound,确保fBound是在定义的时候的那个上下文里面执行。本来bound.prototype=self.prototype就可以将原属性集成过来了,但是这样两个对象属性都指向同一个地方,修改bound.prototype将会造成self.prototype也发生改变,这样并不是我们的本意。所以通过一个空函数nop做中转,能有效的防止这种情况的发生。以上这篇关于原生js中bind函数的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

[JS] 先bind后new,this的指向

非严格模式下,以下调用方式中, this 绑定为全局对象 window , 而在严格模式下, this 绑定为 undefined 。 值得注意是的,只有 this 处于严格模式中,才会绑定为 undefined , 与 f 被调用的位置是否处于严格模式无关。 可见 new 对 this 的影响比 bind 优先级要高, g 虽然通过 bind 绑定了 this 指向的对象为 {a:1} , 但是使用 new g 调用的时候, this 仍然指向以 f 为构造函数的实例。 值得注意的有两点, (1) bind 之后, g.prototype 为 undefined 。 (2) new g 返回的对象 obj ,使用 instanceof 判断 f 和 g 都为 true , 原因就在于, V instanceof target 首先会先用 target(V) 来判断, 然后再判断, target.prototype 是否在 V 的原型链上,参考 ECMAScript Language Specification 但是 bind 的柯里化作用还是有用的, 使用 call 或者 apply ,将 this 绑定为 null 或 undefined 并不会凑效, 此时, this 将绑定为全局对象。 然而,在严格模式下, this 将绑定为 null 或 undefined , 值得一提的是,在非严格模式下, f.call(1); 会自动将 1 包装成 new Number(1) , 然后 this 指向的是这个包装对象。 而在严格模式下, f.call(1); 会将 this 绑定为 1 。 b={} 相当于 b=new Object ,因此, b 是 Object 构造函数的实例。 而 Object.create(null) 会创建一个空对象,它没有原型。 注意, Object.create(undefined); 会报错, 赋值表达式的返回值是函数的引用,因此相当于 f() , 而不是 obj1.f() ,也不是 obj2.f() 。 你不知道的JavaScript(上卷)

js bind和unbind选择题,选什么

选A可以同时绑定鼠标事件和键盘事件。如下$("input").bind({ keydown:function(){$("body").css("background-color","red");}, mouseout:function(){$("body").css("background-color","blue");} });B、可以移除多个事件,也可以移除单个事件,后面部分错误。C、有点模糊,如果是多选感觉也可以A、C。如果单选就是A。这个太模糊的说法了,如果合理的应该是:相反的,而不是对应的。D、bind方法是绑定方法,不是做移除的。

js bind()(js什么时候用bind绑定this)

本文编辑:admin

本文相关文章:


js bind()([JS] 先bind后new,this的指向)

js bind()([JS] 先bind后new,this的指向)

这篇文章给大家聊聊关于js bind(),以及[JS] 先bind后new,this的指向对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录[JS] 先bind后new,this的指向关于原生js中bind函数的简单实现js什么

2024年7月25日 23:20

更多文章:


宁波dell(宁波dell专卖店地址)

宁波dell(宁波dell专卖店地址)

宁波dell专卖店地址关于“宁波dell专卖店地址”的相关内容,条理明确的解释如下:1. 专卖店名称及品牌:宁波dell专卖店,是指销售DELL品牌电脑及相关产品的专卖店。2. 专卖店位置:宁波dell专卖店一般位于宁波市的主要商业区或电子

2024年7月10日 17:08

电脑托架(电脑托架,笔记本)

电脑托架(电脑托架,笔记本)

电脑托架,笔记本好的,我会尽量条理清晰地解释有关“电脑托架”和“笔记本”的相关内容。一、电脑托架1. 定义:电脑托架,又称为笔记本托架、显示屏支架等,是一种用于支撑和固定电脑或笔记本电脑的装置。2. 功能和作用:(1)支撑:电脑托架可以支撑

2024年7月19日 20:11

新款苹果电脑(新款苹果电脑能安装windows吗)

新款苹果电脑(新款苹果电脑能安装windows吗)

新款苹果电脑能安装windows吗**新款苹果电脑可以安装Windows系统**。不过需要注意的是,如果用户使用的是Apple Silicon M系列芯片的Mac电脑(例如MacBook Pro、iMac等),这些设备因为使用了Apple特

2024年7月18日 20:56

联想g430配置(联想g430配置明细)

联想g430配置(联想g430配置明细)

联想g430配置明细联想G430是一款曾经在市场上颇受欢迎的笔记本电脑。下面我将详细地解释联想G430的配置明细:1. 处理器(CPU):联想G430的CPU配置可能因不同版本而异,但常见的配置包括Intel Core 2 Duo系列的处理

2024年7月26日 02:26

联想thinkpad x300(联想thinkpadx300案例分析)

联想thinkpad x300(联想thinkpadx300案例分析)

联想thinkpadx300案例分析联想ThinkPad X300案例分析一、背景介绍联想ThinkPad X300是一款轻薄的商务笔记本电脑,以其卓越的性能和轻便的外观在市场上获得了良好的口碑。该产品主要针对商务人士和需要移动办公的用户。

2024年7月11日 16:16

t6600(t6600cpu参数)

t6600(t6600cpu参数)

t6600cpu参数T6600 CPU是一款相对较新的处理器,它的具体参数可以包括以下几个部分:1. **核心架构和制造工艺**: * T6600 CPU很可能是基于Intel的某个核心架构(如Tiger Lake、Alder Lake等)

2024年7月29日 04:16

女生用的笔记本(女生用的笔记本电脑推荐)

女生用的笔记本(女生用的笔记本电脑推荐)

女生用的笔记本电脑推荐关于“女生用的笔记本电脑推荐”的相关内容,以下是条理清晰的解释:一、考虑因素:1. 用途:首先要考虑的是使用电脑的用途。是用于学习、办公、设计制图,还是娱乐如看剧、游戏等。不同的用途对电脑的性能和配置有不同的要求。2.

2024年7月24日 16:31

微软笔记本(微软笔记本surface售后服务电话)

微软笔记本(微软笔记本surface售后服务电话)

微软笔记本surface售后服务电话“微软笔记本Surface售后服务电话”是有关微软Surface系列笔记本电脑售后服务的联系电话。以下是关于这个售后服务电话的相关内容解释:1. 什么是Surface系列笔记本电脑?Surface系列是微

2024年7月24日 20:56

龙芯电脑(龙芯电脑密码)

龙芯电脑(龙芯电脑密码)

龙芯电脑密码“龙芯电脑密码”是指与龙芯电脑相关的密码问题或与龙芯电脑安全相关的密码设置。龙芯电脑是中国自主研发的计算机品牌,其核心处理器由龙芯公司研发,因此,其密码设置和安全保护也具有特殊的意义。关于“龙芯电脑密码”的相关内容,可以条理明确

2024年7月10日 00:16

cpu fan error(cpu fan error按f1)

cpu fan error(cpu fan error按f1)

cpu fan error按f1“CPU Fan Error 按F1”是一个常见的电脑开机提示信息,主要与电脑的散热系统有关。以下是关于这一内容的详细解释:1. 含义: - CPU Fan Error:表示电脑检测到CPU风扇存在问题或

2024年7月20日 12:23

东芝z830(东芝z830笔记本)

东芝z830(东芝z830笔记本)

东芝z830笔记本东芝Z830笔记本是一款高端商务笔记本电脑,以下是关于它的相关内容解释:1. 设计与外观: - 东芝Z830笔记本通常采用轻薄的金属机身设计,外观时尚且坚固耐用。 - 它的屏幕通常采用高分辨率的显示屏,提供清晰的视

2024年7月8日 21:06

dell一体机(dell一体机三红一白)

dell一体机(dell一体机三红一白)

dell一体机三红一白“dell一体机三红一白”通常指的是Dell品牌的一体机电脑在启动或运行过程中显示的特定颜色指示灯状态。为了更准确地解释这一内容,需要具体了解这些指示灯的上下文和背景信息。不过,根据一般的理解,可以提供以下可能的解释:

2024年7月9日 13:01

笔记本电池充不进电(笔记本电池充不进电怎么激活)

笔记本电池充不进电(笔记本电池充不进电怎么激活)

笔记本电池充不进电怎么激活关于“笔记本电池充不进电怎么激活”的详细解释如下:一、检查硬件和连接1. 电源适配器是否正常工作:用其他设备尝试此电源适配器,看是否可以正常充电。2. 电池连接是否松动:检查电池与笔记本的连接是否松动或未插好。二、

2024年7月22日 04:16

华硕k42(华硕k42j)

华硕k42(华硕k42j)

华硕k42j当然可以,以下是对“华硕K42J”的详细解释:1. 名称和定位:华硕K42J是一款由华硕公司生产的笔记本电脑型号。其中,“K”可能是表示其系列或类型的一个代码,而“42”可能代表其屏幕尺寸或某些其他技术规格。2. 发布时间和历史

2024年7月13日 04:26

笔记本硬件温度(笔记本硬件温度多少正常)

笔记本硬件温度(笔记本硬件温度多少正常)

笔记本硬件温度多少正常笔记本硬件温度的正常范围是一个相对的概念,因为不同的硬件组件和不同的使用环境都会影响温度。但一般来说,以下是一些常见的笔记本硬件温度正常范围及其解释:1. CPU温度: * 正常工作温度范围通常在30°C到80°C之

2024年7月21日 15:56

华硕k41(华硕K41v支持多大内存)

华硕k41(华硕K41v支持多大内存)

华硕K41v支持多大内存关于“华硕K41v支持多大内存”的问题,以下是详细的解释:1. 内存概述:内存是计算机的重要组成部分,用于在计算机运行时暂时存储正在处理的数据和指令。电脑的内存容量越大,能够同时处理的程序和数据的数量就越多。2. 华

2024年7月23日 13:39

灵耀x双屏(灵耀x双屏一堆差评)

灵耀x双屏(灵耀x双屏一堆差评)

灵耀x双屏一堆差评“灵耀X双屏”是一款笔记本电脑产品,而“一堆差评”通常指的是该产品在网络上收到了大量的负面评价。以下是对“灵耀X双屏一堆差评”的相关内容进行的条理明确的解释:1. 灵耀X双屏产品概述: * 灵耀X双屏是一款由华硕推出的笔

2024年7月28日 05:01

gtx765(gtx765m显卡相当于什么水平)

gtx765(gtx765m显卡相当于什么水平)

gtx765m显卡相当于什么水平GTX 765M 是一款NVIDIA公司在中端市场上推出的一款移动级独立显卡。那么关于其性能相当于什么水平,可以从以下方面来分析:1. 相对于前代显卡的进步:相对于GTX 660M或者以下的显卡,GTX 76

2024年7月21日 05:30

华硕笔记本a43s(华硕笔记本a43s拆机教程视频)

华硕笔记本a43s(华硕笔记本a43s拆机教程视频)

华硕笔记本a43s拆机教程视频“华硕笔记本A43S拆机教程视频”的相关内容主要涉及华硕A43S型号笔记本电脑的拆解过程。以下是对这一主题的条理明确的解释:一、准备工作1. 视频资源:首先,需要找到一个可靠的“华硕笔记本A43S拆机教程视频”

2024年7月13日 08:31

戴尔vostro(戴尔vostro270s升级显卡)

戴尔vostro(戴尔vostro270s升级显卡)

戴尔vostro270s升级显卡关于“戴尔Vostro 270s升级显卡”的相关内容,条理明确的解释如下:一、概述戴尔Vostro 270s是一款商用台式机电脑,其显卡升级主要涉及到显卡的拆卸和更换。由于电脑的内部构造较为复杂,非专业人员不

2024年7月20日 22:27

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1731
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索