题目:下列代码打印结果是什么,为什么?
<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