call()的个人理解
先看两道道面试题
面试题1:
var number = 50; var obj = { number: 60, getNum: function() { var number = 70; return this.number; } } console.log(obj.getNum()); console.log(obj.getNum.call()); console.log(obj.getNum.call({number: 20}));
面试题2:
"use strict"; var number = 50; var obj = { number: 60, getNum: function() { var number = 70; return this.number; } } console.log(obj.getNum()); console.log(obj.getNum.call()); console.log(obj.getNum.call({number: 20}));
上面的两道题答案自己先想下为什么?
举个例子
function fn() { console.log(this); } fn.call(); // 普通模式下this是window,在严格模式下this是undefined fn.call(null); // 普通模式下this是window,在严格模式下this是null fn.call(undefined); // 普通模式下this是window,在严格模式下this是undefined
现在是否就明白点了?
下面来公布答案:
面试题1: 60 50 20
面试题2: 60 undefined 20;
看过例子后应该会明白了一些吧!