js call apply bind

call,apply,bind这三个方法其实都是继承自Function.prototype中的,属于实例方法,只能绑定函数表达式,不能用于函数声明


call() apply() 作用:指定绑定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。并且会立即执行该函数


bind()方法创建一个新的函数,在调用时设置this关键字为提供的值。并在调用新函数时,将给定参数列表作为原函数的参数序列的前若干项

1.一号
function cat(){}
cat.prototype.food = 'fish';
cat.prototype.say = function(){
console.log('i love eat:' + this.food); // i love eat fish}
var bluecat = new cat();
bluecat.say();
var yellowdog = { food:'bone' }
bluecat.say.call(yellowdog); // i love eat bone         //括号里为指定函数执行时的上下文环境

2.二号
        function sum(a,b){
            return a + b;
        }
        console.log(sum.length);  //返回函数形参长度
        console.log(sum.call(undefined,3,4));

call与applyd的第一个参数可以传null,undefined,this,当所绑定的函数在window环境下

(3)得到数组中的最大值

因为Math.max( )是无法传入一个数组的,因此需要用call与es6的扩展运算符转换一下

Math.max( ...[4,3,2,8])   //8

Math.max.apply(null, [9,8,4,2,6])  //9

(4)bind()
image.png
(5)使用bind后会返回一个新的匿名函数,在事件的绑定与解绑时需要注意

bind 方法与 call / apply 最大的不同就是前者返回一个绑定上下文的函数,而后两者是直接执行了函数。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容