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

JavaScript 至关重要 Bind

面试官:请你讲讲 js Bind 本文翻译自: http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals...JavaScript 至关重要 Bind 我们用 Bind() 来实现在指明函 数内部 this 指向情况下去调用该函数, 换句话说, bind() 允许我们非常简单在函数或者方法被调用时绑定...在 JavaScript 这种问题比较常见, JavaScript 框架例如 Backbone.js, jQuery 都自动为我们做好了绑定工作, 所以在使用时 this 总是可以绑定到我们所期望那个对象上...(user); Bind 方法允许我们实现函数借用 在 JavaScript , 我们可以传递函数, 返回函数, 借用他们等等, 而 bind() 方法使函数借用变得极其简单...."; } } 接着我们使用 bind() 方法柯里化 greet() 方法. bind() 接收第一个参数指定了 this 值: // 在 greet 函数我们可以传递 null, 因为函数并未使用到

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

理解JavaScriptThis,Bind,Call和Apply

this关键词在JavaScript是个很重要概念,也是一个对初学者和学习其他语言的人来说晦涩难懂。在JavaScript,this是一个对象引用。...在Understanding Variables, Scope, and Hoisting in JavaScript,你学习到函数变量有自己上下文。...由于游戏逻辑需要用户输入,比如按键或点击事件,你可能想要bind事件去获取游戏逻辑类this值。...如果在这里,你并没有使用箭头函数,this将等同于event.currentTarget,如没有显示绑定this,你将不能获取类值。这种策略通常使用在像React这样框架类方法上。...总结 在这篇文章,你学到了关于JavaScriptthis,和基于隐式运行时绑定可能具有的不同值,以及通过bind,call和apply显示绑定。

32440

【译】理解JavaScriptThis,Bind,Call和Apply

this关键词在JavaScript是个很重要概念,也是一个对初学者和学习其他语言的人来说晦涩难懂。在JavaScript,this是一个对象引用。...在Understanding Variables, Scope, and Hoisting in JavaScript,你学习到函数变量有自己上下文。...由于游戏逻辑需要用户输入,比如按键或点击事件,你可能想要bind事件去获取游戏逻辑类this值。...如果在这里,你并没有使用箭头函数,this将等同于event.currentTarget,如没有显示绑定this,你将不能获取类值。这种策略通常使用在像React这样框架类方法上。...总结 在这篇文章,你学到了关于JavaScriptthis,和基于隐式运行时绑定可能具有的不同值,以及通过bind,call和apply显示绑定。

77220

JavaScriptapply、call、bind区别与用法

apply()、call()和bind()方法都是Function.prototype对象方法,而所有的函数都是Function实例。三者都可以改变this指向,将函数绑定到上下文中。 1....语法: fun.bind(thisArg, 队列or数组)() 2. 用法 这三个方法用法非常相似,将函数绑定到上下文中,即用来改变函数this指向。 2.1 普通写法 ?...不同之处在于,在给调用函数传递参数时,apply()是数组,call()参数是逐个列出。 2.3 bind()用法 ? bind方法传递给调用函数参数可以逐个列出,也可以写在数组。...总结bind()用法:该方法创建一个新函数,称为绑定函数,绑定函数会以创建它时传入bind()第一个参数作为this,传入bind()第二个以及以后参数加上绑定函数运行时本身参数按照顺序作为原函数参数来调用原函数...//developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind jianshu.com/

1.1K20

JavaScriptcall,apply,bind方法使用及原理

JavaScript里,call(),apply(),bind()都是Function内置三个方法, 它们作用都是显示绑定this指向,三个方法第一个参数都是this指向对象,也就是函数在运行时执行上下文...当我们定义一个新对象,需要使用其他对象方法时候,我们不需要重新开发重复方法逻辑,借助apply,apply,bind三个方法可以实现对这些方法调用。...bind()方法创建一个新函数,在bind()被调用时,这个新函数this被bind第一个参数指定,其余参数将作为新函数参数供调用时使用,第一个thisArg在setTimeout创建一个函数时传递原始值都会转化成...cacheFun.getCacheName(); // Name is cache let cacheName = cacheFun.getCacheName; cacheName(); // Name: global 在创建绑定函数实例...window对象,所以this.name获取是global 我们需要借助bind方法,在函数调用时候,绑定this执行到cacheFun对象上: let cacheNameByBind = cacheName.bind

1.1K20

关于JavaScriptapply、call、bind详细使用讲解

JavaScript我们对函数执行通常是直接用函数名称加个括号就可以进行调用了,但是这样调用有一个缺点,就是函数this指向是默认绑定,有时候this指向不太符合我们预期。...至于JavaScriptthis指向可以看我这篇文章《在JavaScript,this指向详细讲解》那我们想要把函数this指向变成我们预期想那样有什么方法吗?...这时候JavaScript函数apply、call、bind调用就起到作用了applyapply接受两个参数,第一个参数是this指向,第二个参数是函数接受参数,以==数组==形式传入,==且当第一个参数为...==bind 返回是一个新函数,你必须调用它才会被执行。...])()//bind调用后结果总结call 、bind 、 apply 这三个函数第一个参数都是 this 指向对象,第二个参数差别就来了。

11610

说下jsbind

bind受体是对象,返回是个新函数。 我们知道this总是指向调用他对象。但是有时候我们希望‘固化’这个this。 也就是无论怎么调用这个返回函数都有同样this值。...这就是bind作用。 语法 fun.bind(thisArg[, arg1[, arg2[, ...]]]) 参数 thisArg 当绑定函数被调用时,该参数会作为原函数运行时 this 指向。...this将永久地被绑定到了bind第一个参数,无论这个函数是如何被调用。 arg1, arg2, ... 当绑定函数被调用时,这些参数将置于实参之前传递给被绑定方法。...//developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Function/bind https://www.smashingmagazine.com.../2014/01/understanding-javascript-function-prototype-bind/#what-problem-are-we-actually-looking-to-solve

2.2K10

react事件处理为什么要bind this 改变this指向?

react事件处理会丢失this,所以需要绑定,为什么会丢失this?...In JavaScript, class methods are not bound by default....这句话大概意思就是,你要小心jax回调函数里面的this,class方法默认是不会绑定它 让我十分疑惑,在我知识范围理解,class是es6里面新增方法,不就用来继承原有对象上属性和方法创建新对象吗... ); } }   好像问题越来越明朗了,为啥会拿不到,和class没有关系,完全是因为react自己封装东西,先会把{}里面的代码解析一遍,于是大概就是下面这种情况了 const...()}))() //onclick触发点击事件 这里输出this还是obj,所以this就保留了   所以问题出在react对{}解析会把this指向解除了

1.3K30

【优雅代码】深入浅出 妙用Javascriptapply、call、bind

apply、call  在 javascript ,call 和 apply 都是为了改变某个函数运行时上下文(context)而存在,换句话说,就是为了改变函数体内部 this 指向。...JavaScript ,某个函数参数数量是不固定,因此要说适用条件的话,当你参数是明确知道数量时用 call 。 而不确定时候用 apply,然后把参数 push 进数组传递进去。...存在一种名为伪数组对象结构。...因此,这里我们传入想要上下文 this(其实就是 foo ),到 bind() 函数。然后,当回调函数被执行时候, this 便指向 foo 对象。...答案是,两次都仍将输出 3 ,而非期待 4 和 5 。原因是,在Javascript,多次 bind() 是无效

39720

javascriptbind绑定接收者与函数柯里化

,this对象指向并不是obj,而是forEach对象,forEach对象是全局对象golobal; 那想实现意图怎么办呢?...更好办法是: arr.forEach(obj.add.bind(obj)); bind创建了一个新函数,这个函数跟obj.add一样,唯一不同是,新函数把this绑定了obj 也就是说把add方法绑定给了接收者...你可以直接在bind方法里直接传递这个参数: arr.forEach(obj.add.bind(obj, "mytitle")); 最终代码是: let obj = { add(title,...console.log(param); console.log(index) } } let arr = ['a', 'b', 'c']; arr.forEach(obj.add.bind...(obj, "mytitle")); 输出结果是: mytitle a 0 mytitle b 1 mytitle c 2 将函数与其参数一个子集绑定技术称为函数柯里化; 比起显式封装函数,这样做更简洁

41420

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券