请老师给讲讲,上面那个add.call(sub,5,3)为啥返回8,为啥不调用sub方法
来源:7-1 关键词(上)
qq_慕先生0342934
2020-06-11 23:38:12
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
//补充代码
// function add(x,y){
// alert(x+y);
// }
// function sub(x,y){
// alert(x-y);
// }
// add.call(sub,5,6);
//老师这里不是应该调用sub弹出个-1么,第一个参数不是设置指向sub了么
//下面这个不就是设置了指向cat就用了cat的属性么,这两个为啥不一样啊
function Animal(name){
this.name = name;
this.info = function(){
alert(this.name);
}
}
function Cat(name){
this.name = name;
this.info = function(){
alert(this.name);
}
}
var ani = new Animal('dog');
var cat = new Cat('cat');
ani.info.call(cat,'');
</script>
</body>
</html>
3回答
同学你好,可以理解为虽然改变了add函数的this指向,但是add函数中没有使用到this呦
祝学习愉快~
好帮手慕言
2020-06-13
同学你好,如果没有使用this,只是看不出来效果而已,可以在add函数中打印this,
控制台,指向的是sub
祝学习愉快~
好帮手慕言
2020-06-12
同学你好,可以参考下方:
1、call的第一个参数是传入this的指向。像这里就是把subs的this传递给了add,那么add中如果有this,指向的就是subs。代码中只是一个运算,没有使用到this,所以看不出来效果。
2、在同学的第二段代码中,是有使用this的;改变了这个this的指向,使其指向了cat,所以访问的是cat中的name属性。
如果我的回答帮到了你,欢迎采纳,祝学习愉快~
相似问题