JS之apply,call,bind区别】的更多相关文章

为了加深对基础知识的理解,今天再复习下js中的apply,call,bind的区别和用法.整理笔记的过程也是一个再次学习的过程. apply和call js中的调用apply和call方法可以改变某个函数执行的上下文环境,也就是可以改变函数内this的指向值. 例子: var person={ name:'aa', getName:function(){ console.log(this.name); } } var person2 = { name:'bb' } person.getName(…
call和apply特征一样 都是用来调用函数 立即调用 但是可以在调用函数的同时 通过第一个参数指定函数内部this的指向 call 调用的时候 参数必须以参数列表的形式进行传递 也就是以逗号分隔的方式依次传递即可 apply 调用的时候 参数必须是一个数组 然后在执行的时候 会将数组内部的元素一个一个拿出来 与形参一一对应进行传递 如果第一个参数定义了null或者undefind 则内部的this指向window bind 可以用来指定内部this的指向 然后生成了一个改变this指向的新函…
js中有三个改变this指针的方法,分别是 apply,call,bind.很多人只知道能改变的this,但是具体的适用场景不是太清楚.我也是遇到坑后不断的实践发现了区别. call ,apply方法: function Product(name, price) { this.name = name; this.price = price; } function Food(name, price) { Product.call(this, name, price); this.category…
1 三者的相似之处: (1).都是用来改变函数的this对象的指向的 (2).都是用第一个参数来做this对象的指向 (3).都可以传参数进去 那么,具体到它们有什么区别呢?请看下面的例子: 两个对象,一个动物类,一个人类,人类也是可以走的,那么我们可以让人类直接使用动物类的action方法吗?答案当然是可以的. 方法就是通过改变动物类的action方法的指向,让它的指向变为person,如下: 结果如下: 再看另外两种用法: 这是call的方法,最后一个bind是有点特殊的: 这是因为bind…
每个函数都包含两个非继承而来的方法,apply()和call(),这两方法的用途都是在特定的作用域中调用函数,实际上等于设置函数数体内的this对象的值. apply()和call()第一个参数都一样,运行函数的作用域 apply()第二个参数是数组,call()其余参数直接传给函数. function() sum(num1, num2){ return num1 + num2; } function() callSum1(num1, num2){ return sum.apply(this,…
1.为什么要用 call .apply? 为了 改变方法里面的属性而不去改变原来的方法 function fruits() {} fruits.prototype = { color: "red", say: function() { console.log("My color is " + this.color); } } var apple = new fruits; apple.say(); //My color is red banana = { color…
为纪念10年没写blog,第一篇博文就以这样一个有趣的窍门开始吧 -___- 在ES5中,当我们调用一个函数时,如果要传入的参数是根据其他函数或条件判断生成的,也就是说不确定会传入多少个参数时,在不改变原函数的情况下该如何办呢? (当然了,能避免此文所述情况发生就尽量避免,比如将参数改为object或array等等) 大部分人可能知道用apply能完美解决这个问题: apply与call一样会将第一个参数作为函数的调用对象,即改写了调用函数内的this指针为第一个参数,如果不是对象的方法,可以不…
在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢.在说区别之前还是先总结一下三者的相似之处:1.都是用来改变函数的this对象的指向的.2.第一个参数都是this要指向的对象.3.都可以利用后续参数传参.那么他们的区别在哪里的,先看一个例子. var xw = { name : "小王", gender : "男", age : 24, say : function() { alert(this.name + " , "…
在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:apply . call .bind 三者都是用来改变函数的this对象的指向的:apply . call .bind 三者第一个参数都是this要指向的对象,也就是想指定的上下文(函数的每次调用都会拥有一个特殊值——本次调用的上下文(context)——这就是this关键字的值.):apply . ca…
介绍 在js中,每个函数的原型都指向Function.prototype对象(js基于原型链的继承).因此,每个函数都会有apply,call,和bind方法,这些方法继承于Function. 它们的作用是一样的,都是用来改变函数中this的指向. 使用方法 apply的用法可以表示如下: A.apply(B, [x, y, z]); 此方法可以改变函数A的this指向,使之指向函数B.第二个参数传的是一个函数参数列表的数组形式. call的用法和apply差不多,就只有传参方式不一样.类似于这…