首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript 高级应用(第二弹)

bind() 方法创建一个新函数 bind() 被调用时,这个新函数 this 指定为 bind() 第一个参数,而其他参数作为函数参数,供调用使用 一、基本使用 globalThis.x.../** * 绑定函数 * 创建一个新函数,把 'this' 绑定 module 对象上 */ let boundGetX = retireve.bind(module); console.log...从名称上来看,它在 JavaScript 叫做 “函数”?那么什 么又是“函数” 呢?“函数” 又要怎么触发呢?它有返回值吗?...不绕圈子了,不然就进入陷阱了 一、来看一个生活例子 我们先来看一个生活 函数一个例子(我在学习 callback,知乎翻到) 这里面出现了几个概念,我理解如下 你给店员,留下电话号码...这里实际上是简写了,使用了 ES6 箭头函数语法,直接把网络请求拿到值,当成函数参数递给下游处理 一些内置 JavaScript API 都可以看到 callback 影子 // 第一个参数就是要处理函数

60920

啊,函数呐!!!

查看原图 JavaScript 函数是第一类型对象(函数是对象),我们可以函数视为任何类型 JavaScript 对象; 函数可以拥有有属性 Function.prototype 或者 Function.arguments...;即可以函数作为参数递给另一个函数,也可以函数作为另一函数结果返回;) function add(a,b){ return a+b } function sum(fn,c){ return...,我们都称之为函数;也有种说法:函数是一个函数另一个函数调用 有没有发现函数我们写代码时候处处可见,已经成为 JavaScript 必不可少一部分了,我们广泛使用回函数作为事件处理程序...Function.prototype.bind():bind()方法会创建一个新函数,称为绑定函数.当调用这个绑定函数时,绑定函数会以创建它时传入 bind()方法第一个参数作为 this,传入 bind...,因此this会绑定undefined; 方法调用 当一个函数被保存为对象一个属性时,我们称它为一个方法,this被绑定该对象(也有意外情况;有时this会丢掉对象,函数会修改this)

81720
您找到你想要的搜索结果了吗?
是的
没有找到

一文读懂Jsthis指向_2023-03-15

第二个参数则是一个数组,该数组所有成员依次作为参数,传入原函数。原函数参数call方法必须一个个添加,但是apply方法,必须以数组形式添加。...var print = d.getTime.bind(d);print() // 1481869925657上面代码bind()方法getTime()方法内部this绑定d对象,这时就可以安全地这个方法赋值给其他变量了...这时必须用bind()方法inc()内部this,绑定counter,否则就会出错。bind()还可以接受更多参数这些参数绑定函数参数。...,但是一个常见错误是,包含this方法直接当作函数。...但是,forEach()方法函数内部this.name却是指向全局对象,导致没有办法取到值解决这个问题,也是通过bind()方法绑定this。

47820

一文读懂Jsthis指向

第二个参数则是一个数组,该数组所有成员依次作为参数,传入原函数。原函数参数call方法必须一个个添加,但是apply方法,必须以数组形式添加。...var print = d.getTime.bind(d);print() // 1481869925657上面代码bind()方法getTime()方法内部this绑定d对象,这时就可以安全地这个方法赋值给其他变量了...这时必须用bind()方法inc()内部this,绑定counter,否则就会出错。bind()还可以接受更多参数这些参数绑定函数参数。...,但是一个常见错误是,包含this方法直接当作函数。...但是,forEach()方法函数内部this.name却是指向全局对象,导致没有办法取到值解决这个问题,也是通过bind()方法绑定this。

86700

JavaScript 至关重要 Bind

JavaScript 至关重要 Bind 我们用 Bind() 来实现在指明函 数内部 this 指向情况下去调用该函数, 换句话说, bind() 允许我们非常简单函数或者方法被调用时绑定... JavaScript 这种问题比较常见, JavaScript 框架例如 Backbone.js, jQuery 都自动为我们做好了绑定工作, 所以使用时 this 总是可以绑定到我们所期望那个对象上...(user)); 再考虑另一个方法来修复 this 值: 你可以给 click() 方法传递一个匿名函数, jQuery 会将匿名函数 this 绑定按钮对象上. bind() 函数 ECMA...Bind 方法允许我们柯里化一个函数 柯里化概念很简单, 只传递给函数一部分参数来调用它, 让它返回一个函数去处理剩下参数....所以小结一下, bind() 方法允许我们明确指定对象方法 this 指向, 我们可以借用, 复制一个方法或者方法赋值为一个可作为函数执行变量. 我们以可以借用 bind 实现函数柯里化.

51830

JavaScript基础:call,apply,bind详解,三者有何区别和联系

// 函数this 隐式绑定class page         this.MessageCallBack('发给注册页面的信息')     } } 函数this丢失解决方案: bind...绑定函数this指向: 这是典型bind应用场景, 绑定this指向,用做回函数。...this.pageClass = new Page(this.handleMessage.bind(this)) // 绑定函数this指向 PS: 这也是为什么reactrender函数绑定函数时候...思路 根据call规则设置上下文对象,也就是this指向。 通过设置context属性,函数this指向隐式绑定context上 通过隐式绑定执行函数并传递参数。...思路: 传递给函数参数处理,不太一样,其他部分跟call一样。 apply接受第二个参数为类数组对象, 这里用了JavaScript权威指南中判断是否为类数组对象方法。

1K10

JavaScript 模式》读书笔记(6)— 代码复用模式3

这两者之间唯一区别在于其中一个可以接受传递给将被调用方法参数数组,而另一个仅逐个接受参数可以使用这些方法以借用现有对象功能。...可以传递对象、任意参数以及借用方法,并将它们绑定对象作为this本身成员。从根本上说,您对象将在一小段时间内伪装成其他对象,从而借用其所需方法。...但是什么样场景,应该函数指针赋值给一个全局变量,或者将该函数作为函数来传递?客户端编程中有许多事件和函数,因此确实发生了很多这样混淆事情。...// 给变量赋值 // this指向全局变量 var say = one.say; console.log(say('hoho')); // 作为函数传递 var yetanother = {...,即那些传递给bind()参数(除了第一个以外),以及那些传递给bind()所返回函数参数,其中该新函数将在以后被调用。

40830

Function.prototype.bind()

当使用new 操作符调用绑定函数时,该参数无效。 arg1, arg2, ... 当绑定函数被调用时,这些参数置于实参之前传递给绑定方法。...返回值 返回由指定this值和初始化参数改造函数拷贝 描述 bind() 函数会创建一个新函数(称为绑定函数),新函数与被函数绑定函数目标函数)具有相同函数体( ECMAScript...JavaScript新手经常犯一个错误是一个方法从对象拿出来,然后再调用,希望方法 this 是原来对象。(比如在传入这个方法。)如果不做特殊处理的话,一般会丢失原来对象。...这些参数(如果有的话)作为bind()第二个参数跟在this(或其他对象)后面,之后它们会被插入目标函数参数列表开始位置,传递给绑定函数参数会跟在它们后面。...当使用类方法时,需要 this 引用类实例,你可能需要显式地把 this 绑定函数以便继续使用实例。

29110

JavaScript 模式》读书笔记(6)— 代码复用模式3

这两者之间唯一区别在于其中一个可以接受传递给将被调用方法参数数组,而另一个仅逐个接受参数可以使用这些方法以借用现有对象功能。...可以传递对象、任意参数以及借用方法,并将它们绑定对象作为this本身成员。从根本上说,您对象将在一小段时间内伪装成其他对象,从而借用其所需方法。...但是什么样场景,应该函数指针赋值给一个全局变量,或者将该函数作为函数来传递?客户端编程中有许多事件和函数,因此确实发生了很多这样混淆事情。...// 给变量赋值 // this指向全局变量 var say = one.say; console.log(say('hoho')); // 作为函数传递 var yetanother = {...,即那些传递给bind()参数(除了第一个以外),以及那些传递给bind()所返回函数参数,其中该新函数将在以后被调用。

50620

JavaScriptthis指向哪?

这些参数按照顺序传递给函数,并在调用函数作为函数参数使用功能: 返回原函数 function 拷贝, 这个拷贝 this 指向 thisArgvar test = { fun: function...函数作为参数传递函数作为参数传递函数,并在新函数执行该参数函数:var lostObj3 = { name: "lostObj3", fun: function(){ console.log...实际上也相当于赋值给变量后调用这种情况,而且 doFun()作为独立函数调用,所以其 this 也就指向全局对象了函数如果将对象方法作为函数递给其他函数,this 绑定也可能丢失var lostObj4...嵌套函数当某个函数是嵌套在另一个函数内部函数时,内部函数 this 绑定会丢失,并且会绑定全局对象或 undefined(严格模式下):var lostObj5 = { name: 'lostObj5...箭头函数具有词法作用域,其 this 值定义时就已经确定,并继承外部作用域绑定 this 对象普通函数 this 可以通过函数调用方式(如对象方法、构造函数函数调用等)来绑定不同对象,而箭头函数没有自己

12810

35道JavaScript 基础内容面试题

当一个函数另一个函数定义时,就会发生闭包,即使在外部函数完成执行之后,内部函数可以从其外部函数访问变量。 4. JavaScript 中原型继承如何工作?...JavaScript 通过一等函数、高阶函数和对匿名函数支持等功能支持函数式编程。 8. 什么是高阶函数? 高阶函数可以接受其他函数作为参数或将它们作为结果返回函数。... JavaScript 函数被视为一等对象,因为它们可以分配给变量、作为参数传递并从其他函数返回。这种灵活性是函数式编程基础。 10. 手动实现Array.prototype.map方法。...对象解构是一功能,允许您从对象中提取属性并以更简洁和可读方式将它们绑定变量。它在处理复杂对象时简化了代码。 22.什么是ES6模块? ES6 模块是一种代码组织单独文件方法。...它允许您存储不同值,并提供有效地添加、删除和检查元素是否存在方法。 24.什么是函数函数作为参数递给另一个函数函数,然后在外部函数内部调用该函数

6610

分享 35 道 JavaScript 基础面试题

当一个函数另一个函数定义时,就会发生闭包,即使在外部函数完成执行之后,内部函数可以从其外部函数访问变量。 4. JavaScript 中原型继承如何工作?...JavaScript 通过一等函数、高阶函数和对匿名函数支持等功能支持函数式编程。 8. 什么是高阶函数? 高阶函数可以接受其他函数作为参数或将它们作为结果返回函数。... JavaScript 函数被视为一等对象,因为它们可以分配给变量、作为参数传递并从其他函数返回。这种灵活性是函数式编程基础。 10. 手动实现Array.prototype.map方法。...对象解构是一功能,允许您从对象中提取属性并以更简洁和可读方式将它们绑定变量。它在处理复杂对象时简化了代码。 22.什么是ES6模块? ES6 模块是一种代码组织单独文件方法。...它允许您存储不同值,并提供有效地添加、删除和检查元素是否存在方法。 24.什么是函数函数作为参数递给另一个函数函数,然后在外部函数内部调用该函数

15710

js基础-关于call,apply,bind一切

// 函数this 隐式绑定class page this.MessageCallBack('发给注册页面的信息') } } 既然知道问题了,那我们只要绑定函数this...函数this丢失解决方案: bind绑定函数this指向: 这是典型bind应用场景, 绑定this指向,用做回函数。...this.pageClass = new Page(this.handleMessage.bind(this)) // 绑定函数this指向 PS: 这也是为什么reactrender函数绑定函数时候...思路 根据call规则设置上下文对象,也就是this指向。 通过设置context属性,函数this指向隐式绑定context上 通过隐式绑定执行函数并传递参数。...思路: 传递给函数参数处理,不太一样,其他部分跟call一样。 apply接受第二个参数为类数组对象, 这里用了JavaScript权威指南中判断是否为类数组对象方法。

1.4K21

说说这个this啊

(); //3 本例函数A被作为objA属性值,严格来说,obj并不包含A函数,但是它保有对A函数引用,当obj调用A方法时,隐式绑定规则将this绑定到了obj上,所以this.a就是...,obj.A作为参数递给函数B,其实函数A最终被调用位置是fn(),此时fn是没有函数修饰,上述代码相当于 123456789101112 var a = 2;function A(){...时,先将回函数注册,1000ms后函数推入事件队列,然后检查主线程即调用栈是否为空,如果为空,队列里函数按照先入先出原则push调用栈,想了这么多呢,我发现我确实想多了,this里,ojbk...显式绑定绑定 js可以通过一些方法来改变this指向,《你不知道js》里被称为硬绑定,这些方法有apply,call,bind。 apply 此方法会执行函数。...apply方法只能接受两个参数,一个是this指向上下文对象,另一个是传递给函数参数列表(可选),这个参数列表是以数组形式。

82090

JavaScriptthis指向问题

第一个示例,使用call方法hello函数this值绑定person对象上。第二个示例,使用apply方法sum函数this值绑定为null,并通过参数数组传递参数。...如果构造函数没有显式返回一个对象,则返回这个新对象。 通过这个过程,我们可以看到,当使用new关键字调用构造函数时,JavaScript会自动构造函数this绑定新创建实例上。...第二段代码,箭头函数作为addEventListener函数,由于箭头函数没有自己this绑定,它会继承父级作用域中this(即全局作用域),所以箭头函数输出this是Window对象...函数this:当一个函数作为参数递给另一个函数,并在内部函数中使用this时,this指向可能会变化。...事件处理函数函数或对象方法,使用箭头函数bind()方法或this赋值给一个变量来确保this指向正确。

20360

分享近百道JavaScript 基础面试题,帮助你巩固JavaScript 基础知识

bind() 方法创建一个新函数调用时具有指定 this 值和传递给参数。 12. JavaScript 循环遍历数组有哪些不同方法?...JavaScript 函数是什么? 函数作为参数递给另一个函数并在稍后或特定事件发生后执行函数。 25. JavaScript JSON.parse() 方法用途是什么?...JavaScript some() 方法用途是什么? some() 方法测试数组至少一个元素是否满足提供测试函数。 42. JavaScript 函数是什么? 举个例子。...函数作为参数递给另一个函数并在该函数内部调用函数。一个示例是 setTimeout() 函数,你可以在其中传递一个函数一定延迟后执行。 43....词法 this 是指使用箭头函数语法定义函数 this 值,它将 this 绑定周围词法上下文。 54. JavaScript 如何比较两个对象是否相等?

17610

嘿,你真的懂this吗?

总结起来,this 指向规律有如下几条: 函数,非显式或隐式地简单调用函数时,严格模式下,函数 this 会被绑定 undefined 上,非严格模式下则会被绑定全局对象 window...第二个参数则是一个数组,该数组所有成员依次作为参数,传入原函数。 原函数参数 call 方法必须一个个添加,但是 apply 方法,必须以数组形式添加。...count: 100 }; var func = counter.inc.bind(obj); func(); obj.count // 101 bind 还可以接收更多参数这些参数绑定函数参数... this,使用 bind 方法主要目的是绑定参数 x,以后每次运行新函数 plus5,就只需要提供另一个参数 y 就够了。... 最常用模式之一,但是一个常见错误是,包含 this 方法直接当作函数

49820

javascript基础修炼(3)—Whats this(下)

3.2示例被认为是javascript语言bug,即this指向丢失问题。同样问题也可能在函数参时发生,本文【第5章】将对这种情况进行详细说明。 四....函数 javascript函数可以被当做参数传递进另一个函数,也就有了函数这样一个概念。...所以函数内部操作一个值为引用类型形参时,会影响函数外部作用域,因为它们均指向内存同一个函数。详细可参考[深入理解javascript函数系列第二篇——函数参数]这篇博文。...理解了函数参,就很容易理解函数this为何指向全局了,函数对应形参是一个引用类型标识符,其中保存地址直接指向这个函数在内存真实位置,那么通过执行这个标识符来调用函数就等同于this...另一个存在限制,是没有绑定this响应函数异步运行时可能会出问题,当它作为函数被传入一个异步执行方法时,同样会因为丢失了this指向而引发错误。

86320

Js篇-面试题5-如果浏览器不支持 bind 函数,实现一个函数让其兼容

当使用 new 操作符调用绑定函数时,该参数无效,会被忽略,当使用bind setTimeout创建一个函数作为提供)时,作为 thisArg 传递任何原始值都将转换为object。...当绑定函数被调用时,这些参数会被插入目标函数参数列表开始位置,传递给绑定函数参数会跟在它们后面,如下所示 function list() { return Array.prototype.slice.call...当类方法需要 this指向类实例时,你可能需要显式地把this绑定函数,这样就不会丢失该实例引用 也就是说,当使用类方法时需要this指向类实例,就可以使用bind() this 绑定函数来管理实例...); } } 自建 bind 函数来给一个对象绑定事件 思路: 三个参数分别是 对象,事件,函数 兼容性: 通过 if 判断对象是否存在addEventListener方法来区分浏览器...,当然也可以跟上面一样通过bind是不是Function下原型对象 this 问题解决:由于传入函数是浏览器调用,我们是无法去直接操作,所以我们attachEvent()不直接传入函数

62520

React应用优化:避免不必要render

下面是一些常见例子。 函数声明 经常在render声明函数,尤其是匿名函数及ES6箭头函数,用来作为递给子节点,一个典型例子如下。...,获取当前被点击ID,很自然地,render 为每个item创建了箭头函数作为其点击。...这会导致每次组件BtnListrender都会重新生成一遍这些函数,而这些函数是子节点Itemprops组成,从而子节点不得不重新渲染。...二是为函数绑定参数父组件同一个方法需要给多个子节点使用时尤为常见,如下。...,bind了上下文父组件方法onRemove连同item.id传递给子组件,由子组件调用onRemove时传入item.id,像如下这样。

1.3K20
领券