call.apply.bind方法的作用和区别: 这三个方法的作用都是改变函数的执行上下文,换句话说就是改变函数体内部的this指向,以此来扩充函数依赖的作用域 1.call 作用:用于改变方法内部的this指向 格式:xxx.call(对象名,参数1,参数2,...)  即:将 xxx 方法中的 this 指向 对象名 例子:未使用call方法前,test()中的this指向window,使用后指向obj对象 function test(a,b){ console.log(this); con…
<script> function test(){ console.log(this) } // new test(); //函数调用call方法的时候,就会执行. //call的参数:第一个参数:方法执行的时候,方法中的this的指向.第二个参数:表示方法执行所需要的实际参数. var obj ={ name:"zhagafd"}; // test.call(obj,"hello"); //applly的参数:第一个参数:方法执行的时候,方法中this…
bind函数 bind 函数挂在 Function 的原型上 Function.prototype.bind 创建的函数都可以直接调用 bind,使用: function func(){ console.log(this) } func.bind(); // 用函数来调用 bind 的作用: bind() 方法调用后会创建一个新函数.当这个新函数被调用时,bind() 的第一个参数将作为新函数运行时的 this的值,之后的序列参数将会在传递的实参前传入作为新函数的参数.<MDN> bind 接…
js中call.apply.bind方法的作用和区别 1. call方法 作用:专门用于修改方法内部的 this 指向 格式:xxx.call( 对象名, 参数1, 参数2 , ...);.即:将 xxx 方法的 this 指向为 对象名 实例: javascript function test(a,b){ console.log(this); console.log(a + b); } test(1,2); // window 3 var obj = {name:'zjy'}; window.…
从一开始,我是在书上看到关于bind().call() 和 apply(), 不过长久以来,在工作中与网上接触到了很多关于这三个方法的使用场景,对这三个方法也算是比较熟悉了.所以把他们的作用和区别简单阐述一下! javaScript权威指南上的解释是: call() .apply()可以看作是某个对象的方法,通过调用方法的形式来间接调用函数.bind() 就是将某个函数绑定到某个对象上. 关于call() 和 apply() 在犀牛书上的解释可能比较生涩难懂,我的理解就是,它们的作用是: 让函数…
1.call/apply/bind方法的来源 首先,在使用call,apply,bind方法时,我们有必要知道这三个方法究竟是来自哪里?为什么可以使用的到这三个方法? call,apply,bind这三个方法其实都是继承自Function.prototype中的,属于实例方法. 1 console.log(Function.prototype.hasOwnProperty('call')) //true 2 console.log(Function.prototype.hasOwnPropert…
 壹 ❀ 引 同事最近在看angularjs源码,被源码中各种bind,apply弄的晕头转向:于是他问我,你知道apply,call与bind的区别吗?我说apply与call是函数应用,指定this的同时也将方法执行,bind不同,它只是负责绑定this并返回一个新方法,不会执行. 他又问,那如果一个方法bind对象a后,再bind对象b,最后再bind对象c,此时执行函数this指向谁呢?(他经常问这种奇葩问题...):我不加思索的回答,是c吧:真的吗?他反问到. 反问的一瞬间,我知道我应…
call call 方法第一个参数是要绑定给this的值,后面传入的是一个参数列表.当第一个参数为null.undefined的时候,默认指向window. var arr = [1, 2, 3, 89, 46] var max = Math.max.call(null, arr[0], arr[1], arr[2], arr[3], arr[4])//89 可以这么理解: obj1.fn() obj1.fn.call(obj1); fn1() fn1.call(null) f1(f2) f1.…
在原生js中会有三个很常见的函数,call,apply,bind 他们的作用就是改变当前函数的this指针, 但是细微来说他们还是有不同的. 1)call,apply都是执行某一函数,发现this有变得时候才使用的(进行时) 2)bind是在函数进行调用之前,就强行给变了this的指向(进行前),它的效果是返回一个函数(只是给变了this指向) 说的很多了,不说了 demo : function Foo(name){ this.name=name; } Foo.prototype.getName…
1)bind与apply.call 的最大区别就是:bind不会立即调用,其他两个会立即调用 var fn = { _int: function(){return 3}, fun: function(){ $(id).click(function() { console.log(this._int()) }).bind(this); } } 2)apply和call的区别 语法: function.apply(thisObj, [obj1,obj2,obj3,...]); function.ca…