修改this指向(bind、call 和 apply)】的更多相关文章

js修改函数内部的this指向 在调用函数的时候偶尔在函数内部会使用到this,在使用this的时候发现并不是我们想要指向的对象.可以通过bind,call,apply来修改函数内部的this指向. 默认在浏览器下script标签内定义的函数,调用的时候函数内部的this指向window(浏览器窗口对象) <script> var a=2 function hello(){ console.log(this) console.log(this.a) } hello() //输出: window…
前言:call.apply和bind都是为了改变某个函数运行时的this指向的,对于前端人员来说,关于this的掌握程度,直接决定了前端水平的高低.下面我们就来简单浅显易懂的来看一下es5中常用的三种修改this指向的方法. 1.call()方法 function test(m,n){ console.log(this.abc); } test();//这里打印的是undefined test.call({abc : 123});//这里打印的是123 如上代码所示,如果指定在全局环境下调用te…
bind(),call(), apply()方法的区别是什么? 共同点:改变this指向,任何调用都不在起作用 bind() 改变this的指向,不会调用函数,返回一个新的函数 var o ={a:'abc'}; var fn1 = fn.bind(o);//this指向o 相当o.fn fn1();// call( ) 改变this指向并调用函数---判断数据类型 var arr = [1,2,4] var str = '1231'; console.log(Object.prototype.…
1.Function.apply.bind(…) 我在学习promise部分的时候遇到了这样的代码: Promise.resolve([10,20]).then(Function.apply.bind(function(x, y){ console.log(x, y); }, null)); // 10,20 看到这里我已经蒙圈了,Function.apply.bind(…)是个什么操作?可能很多人和我一样之前只接触过Function.bind.apply(…). 于是查了一下文档,大致明白了其…
一直没怎么使用过JavaScript中的bind,call和apply, 今天看到一篇比较好的文章,觉得讲的比较透彻,所以记录和总结如下 首先要理解的第一个概念,JavaScript中函数调用的方式,总结下来,有以下4种 1. 方法调用 2. 正常函数调用 3. 构造器函数调用 4. apply/call 调用 要明白的第2个概念, JavaScript 中的函数,无论是上面哪种函数调用方式,除了你函数声明时定义的形参外,还会自动给函数添加两个形参,分别是this 和 arguments 要明白…
一.bind 首先: var alertWrite = document.write; alertWrite('who am I?'); 这两行代码的运行结果是什么呢?不要急着回答,看完下面的内容再回答. bind 的其中一个用法就是:绑定函数,使其无论怎么样调用都用相同的 this 看下面的例子: var obj = { getThis: function() { console.log(this); } };obj.getThis(); var getThisCopy = obj.getTh…
 壹 ❀ 引 同事最近在看angularjs源码,被源码中各种bind,apply弄的晕头转向:于是他问我,你知道apply,call与bind的区别吗?我说apply与call是函数应用,指定this的同时也将方法执行,bind不同,它只是负责绑定this并返回一个新方法,不会执行. 他又问,那如果一个方法bind对象a后,再bind对象b,最后再bind对象c,此时执行函数this指向谁呢?(他经常问这种奇葩问题...):我不加思索的回答,是c吧:真的吗?他反问到. 反问的一瞬间,我知道我应…
前言: 由于js 中this的指向受函数运行环境的影响,指向经常改变,使得开发变得困难和模糊,所以在封装sdk,写一些复杂函数的时候经常会用到this 指向绑定,以避免出现不必要的问题,call.apply.bind基本都能实现这一功能,现对这三种方法使用总结一下: 1.function.prototype.call() call 方法可以指定this 的指向(即函数执行时所在的的作用域),然后再指定的作用域中,执行函数 call 方法的参数,应该是对象obj,如果参数为空或null,undef…
在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这三个方法进行详细的讲解,并列出几个经典应用场景. 1.call(thisArgs [,args...]) 该方法可以传递一个thisArgs参数和一个参数列表,thisArgs 指定了函数在运行期的调用者,也就是函数中的 this 对象,而参数列表会被传入调用函数中.thisArgs 的取值有以下4…
this 的指向 在具体的实际应用中,this 的指向无法在函数定义时确定,而是在函数执行的时候才确定的,根据执行时的环境大致可以分为以下3种: 1.当函数作为普通函数调用时,this 指向全局对象 2.当函数作为对象的方法调用时,this 指向该对象 3.当函数作为构造器调用时,this 指向新创建的对象 示例一: window.name = 'myname'; function getName() { console.log(this.name); } getName(); //输出myna…