Mr. Lei

Js-Function对象call、apply、bind用法区别
call、apply、bind总的来说用法、功能几乎是一样的,通俗点说就是可以“借用”对象或方法等,只是在语法上稍...
扫描右侧二维码阅读全文
29
2019/04

Js-Function对象call、apply、bind用法区别

call、apply、bind总的来说用法、功能几乎是一样的,通俗点说就是可以“借用”对象或方法等,只是在语法上稍有不同,简单记录下。

共同点

一、三个方法首个参数为“借用”的对象,如不传,默认为全局(window)

二、call与apply使用后都会立即执行

call

//从第2个参数开始,可以接收任意个参数
func.call(obj,a,b,c,d...)

apply

//只允许接收2个参数,参数1为对象,参数2为数组/类数组
var arr=[1,2,3];
func.apply(obj,arr);

bind

//方法同call,不同点在于bind是返回一个函数,不会立即执行,需手动调用执行
func.bind(obj,a,b,c,d...)
func();//手动执行

例子

function Student(yuwen,shuxue){
  console.log("我叫"+this.sname+",今年"+this.sage+"岁,语文成绩为"+yuwen+",数学成绩为"+shuxue);
}

//call
var xm={sname:"小明",sage:6}
Student.call(xm,90,85);//我叫小明,今年6岁,语文成绩为90,数学成绩为85

//apply
var xw={sname:"小王",sage:6}
var xw_cj=[98,95];
Student.apply(xw,xw_cj);//我叫小王,今年6岁,语文成绩为98,数学成绩为95

//bind
var xh={sname:"小红",sage:5}
var xhh=Student.bind(xh,95,80);
xhh();//我叫小红,今年5岁,语文成绩为95,数学成绩为80
Last modification:May 24th, 2019 at 12:22 pm

Leave a Comment