apply()和call()、bind()的使用介绍

来源:互联网 发布:php经典面试题目汇总 编辑:程序博客网 时间:2024/06/10 01:47

Func.call([thisObj[,arg1[,arg2[,......[,argN]]]]]),序列形式传参

Func.apply([thisObj[,argArray]]]),数组形式传参

Func在thisObj作用域、args参数下执行。

例:

function sum(num1, num2) {     return num1 + num2; } console.log(sum.call(window, 10, 10)); //20 console.log(sum.apply(window,[10,20])); //30

apply()和call()的真正用武之地是能够扩充函数赖以运行的作用域。

例:

window.firstName = "diz"; window.lastName = "song"; var myObject = { firstName: "my", lastName: "Object" }; function HelloName() {   console.log("Hello " + this.firstName + " " + this.lastName, " glad to meet you!"); } HelloName.call(window); //huo .call(this); HelloName.call(myObject); 
例:

function temp1() {     console.log(this); //Object {}     function temp2() {         console.log(this); //Window     }     temp2(); //函数调用模式} var Obj = {}; temp1.call(Obj);//重新定义了temp1()的执行范围


**********

Func.bind(thisArg[,arg1[,arg2[,...]]]),用于为调用函数绑定一个作用域。

例:

window.color = "red"; var o = { color: "blue" }; function sayColor(){     alert(this.color); } var OSayColor = sayColor.bind(o); //为OSayColor绑定作用域,于是它的this值为o对象了OSayColor(); //blue 



0 0
原创粉丝点击