先看两道道面试题

面试题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;

看过例子后应该会明白了一些吧!

 

相关文章:

  • 2021-12-10
  • 2021-04-12
  • 2021-04-06
  • 2022-01-18
  • 2021-12-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-07
  • 2022-12-23
  • 2022-12-23
  • 2021-07-19
  • 2021-10-11
  • 2021-08-24
  • 2021-05-02
相关资源
相似解决方案