初识js call()方法以及call()使用实例

如下 想输出person1对象的 姓名,

  • 可以调用person对象的fullName方法,
  • 怎么传递参数呢,用.call(person1) 传递参数
  • 调用方法 person.fullName,调用括号移动到call后面啦

call方法的作用,改变了对象里的this指向,指定的对象可以去调用另一个对象里的方法

//本例调用 person 的 fullName 方法,并用于 person1:

var person = {
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
}
var person1 = {
    firstName:"Bill",
    lastName: "Gates",
}
var person2 = {
    firstName:"Steve",
    lastName: "Jobs",
}
person.fullName.call(person1);  // 将返回 "Bill Gates"

call()总结:
使用call() 方法,你可以编写能够在不同对象上使用的方法,此为方法重用

call()括号内传空,或传递null,undefined时,this指向window对象

<script>
    // let name='judy';//let定义不是window全局变量
    var  name="tom";
    let a={
        name:'aa'
    }
    let b={
        name:'rubby',
        getName(){
            return this.name;
        }
    }
let name1=b.getName.call(a);
let name2=b.getName.call();//this指向window对象
console.log("name1的值是"+name1);// aa
console.log("name2的值是"+name2);// ""  let定义name时输出
let name3=b.getName.call(null);//调用方法里的this还是指向window,所以输出tom
let name3=b.getName.call(undefined);//调用方法里的this还是指向window,所以输出tom
</script>

call() 传递多个参数 注意被调用的函数要写形参,便于调用时传递多个参数

<script>
    let couts={
        a:12
    }
    let obj={
        addFun(b,c){
            console.log(b+c+this.a); //20
        }
    }
    obj.addFun.call(couts,3,5);
    //第一步,addFun的this指向couts的引用
    //第二步,给addFun传参3和5
    //第三步,执行addFun,得到3+5+12。
</script>

参考 https://www.w3school.com.cn/js/js_function_call.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值