当前位置: 首页 > 工具软件 > marty.js > 使用案例 >

js面试题

丁翊歌
2023-12-01
题目:下列代码打印结果是什么,为什么?
<script type="text/javascript">
  var marty={
      firstName:"Marty",
      lastName:"McFly",
      timeTravel:function (year) {
        console.log(this.firstName+" "+this.lastName +" is time traveling to " + year);
      }
  };
  var getBackInTime= marty.timeTravel;
  getBackInTime(2014);
</script>

结果是:

undefined undefined is time traveling to 2014

原因:

这是作用域的问题,也就是说你对象里面的变量其实是private的,对对象里面的方法是隐藏的,这时我们就需要用this指针才能找得到对象的变量,在外部引用对象是对象名称充当了this指针。

所以说只有加this才能引用到对象的变量

此处只是将marty.timeTravel方法拿出来,此时的this.firstName、this.lastName变量就只能是undefined

如果是 

marty.timeTravel(2016);

则结果是:

Marty McFly is time traveling to 2016

 类似资料: