当前位置: 首页 > Web前端 > JavaScript

call()、apply()、bind()在JavaScript中的用法

时间:2023-03-27 12:47:18 JavaScript

其实是一件很简单的事情。仔细阅读十分钟,你就可以从一头雾水到一目了然!先看下面:  Example1obj.objAge;//17obj.myFun()//小张的年龄undefined Example2 shows()//盲僧 比较两者的区别,第一个print中的this指向obj,第二个全局声明的shows()函数this是window;1、call()、apply()、bind()都是用来重新定义这个对象的!  如:  obj.myFun.call(db);    //德玛99岁 obj.myFun.apply(db);   //德玛99岁 obj.myFun.bind(db)();   //德玛99岁 及以上,除了bind方法后面多了一个(),返回的结果都是一样的!  由此可以得出结论,bind返回的是一个新的函数,必须先调用它才会执行。db,'成都','上海');    //德玛99岁从成都到上海obj.myFun.apply(db,['Chengdu','Shanghai']);//Demarage99从成都到上海obj.myFun.bind(db,'Chengdu','Shanghai')();//德玛99岁从成都到上海 obj.myFun.bind(db,['成都','上海'])();  //德玛99岁从成都上海到undefined  有细微的差距!  从上面四个结果不难看出, call、bind、apply这三个函数的第一个参数就是this指向的对象,而第二个参数的区别就来了:call的参数是直接放入,第二个、第三个、第n个参数全部用逗号隔开,直接放在obj.myFun.call(db,'Chengdu',...,'string')后面; apply的所有参数必须放在一个数组中传入obj.myFun.apply(db,['Chengdu',...,'string']); bind的参数和call一样,只不过它返回的是一个函数。        当然三者的参数不限于字符串类型,各种类型都可以,包括函数、对象等!原文地址:https://www.cnblogs.com/Shd-Study/p/6560808.html