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;

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

 

posted @ 2018-11-28 10:49  秀&莹&锐  阅读(196)  评论(0编辑  收藏  举报