关于this

  • apply、call 有什么作用,什么区别
    • apply()方法可以在设置指定的this值和参数的情况下调用某个函数,参数以数组或类数组对象的形式存在
  • call()方法可以在设置指定的this值和一个或若干指定的参数即参数列表的前提下调用某个函数
  • call和apply的作用一样,不同之处是参数的形式不同,call接收参数列表,apply则接收参数数组

代码

1.以下代码输出什么

var john = { 
  firstName: "John" 
}
function func() { 
  alert(this.firstName + ": hi!")
}
john.sayHi = func
john.sayHi() 

输出:John:hi!
2.下面代码输出什么,为什么

func() 
function func() { 
  alert(this)
}

输出:window 因为该函数的执行环境是全局环境window
3.下面代码输出什么

function fn0(){
    function fn(){
        console.log(this);
    }
    fn();
}
fn0();
document.addEventListener('click', function(e){
    console.log(this);
    setTimeout(function(){
        console.log(this);
    }, 200);
}, false);

输出:window document window
4.下面代码输出什么,why

var john = { 
  firstName: "John" 
}
function func() { 
  alert( this.firstName )
}
func.call(john) 

输出:John 因为函数实例func调用call方法,指定函数func内部的this指向john对象。
5.代码输出?

var john = { 
  firstName: "John",
  surname: "Smith"
}
function func(a, b) { 
  alert( this[a] + ' ' + this[b] )
}
func.call(john, 'firstName', 'surname') 

输出:John Smith
6.以下代码有什么问题,如何修改

var module= {
  bind: function(){
  //改成var that=this即可
    $btn.on('click', function(){
      console.log(this) //this指什么,此处this指的是$btn,$btn没有showMsg属性,会报错,不符合题意想要表示的是module
      this.showMsg();
    })
  },
  showMsg: function(){
    console.log('饥人谷');
  }
}

修改后:

var module= {
  bind: function(){
  var that=this;
    $btn.on('click', function(){
      console.log(this);
      that.showMsg();
    })
  },
  showMsg: function(){
    console.log('饥人谷');
  }
}

版权声明:本教程版权归本人与饥人谷所有,转载需说明来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. apply、call 、bind有什么作用,什么区别? call ,apply的作用:调用一个函数,传入函数...
    Rising_suns阅读 405评论 0 0
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,964评论 2 17
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,151评论 1 10
  • 通过题目来熟悉this,原型链,继承 开胃菜----this 1. apply、call、bind有什么作用,有什...
    JunVincetHuo阅读 397评论 0 0
  • 作业 this 相关问题 问题1: apply、call 有什么作用,什么区别apply()和call()函数都可...
    饥人谷_桶饭阅读 413评论 0 0