this的大厂面试题

一.普通的函数调用

function get(content){
  console.log(content);
}
get('你好')
get.call(window,'你好')

view:

二.函数作为对象的方法被调用(谁调用我,我指向谁)

 var person = {
      name: "张三",
      run: function (time) {
        console.log(`${this.name}在跑步 最多${time}min就不行了`);
      },
    };

    person.run(30);

语法糖:

 person.run.call(person,30)

三.大厂面试题

    var name = 222;
    var a = {
      name: 111,
      say: function () {
        console.log(this.name);
      },
    };
    var fun = a.say;
    fun();
    a.say()

    var b = {
      name: 333,
      say: function (fun) {
        fun();
      },
    };
    b.say(a.say);
    b.say = a.say;
    b.say();

通过上述的两道题我们在做我们手上的这道题。

 总共有四次调用,

扫描二维码关注公众号,回复: 14532734 查看本文章

解析:

  fun()=======================>fun.call(window)-----------------------222

 a.say()=====================>a.say.call(a)---------------------------111

  fun()=======================>fun.call(window)-----------------------222

 a.say()=====================>a.say.call(b)------------------------------333

输出的结果:

猜你喜欢

转载自blog.csdn.net/qq_59076775/article/details/127347860