JS中的this

本文探讨了JavaScript中的函数调用方式,包括直接调用、作为对象方法调用,以及它们的简写形式。通过示例展示了`call`方法如何改变函数内部`this`的指向,深入理解函数作用域对于`this`的绑定规则,以及在面试中可能出现的相关问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//在函数中直接调用
function get(content) {
  console.log(content);
}
get("Hi");
//上面这个是下面这个的简写语法糖
get.call(window, "Hi");

//函数作为对象的方法 被调用
var person = {
  name: "Joshua",
  run: function (time) {
    console.log(`${this.name},run time:${time}`);
  },
};
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(); //fun.call(window) //222
a.say(); //a.say.call(a)//111

var b = {
  name: 333,
  say: function (fn) {
    fn();
  },
};

b.say(a.say); //b.say.call(a.say)//222
b.say = a.say; //function () {console.log(this.name)}
b.say(); //b.say.call(b)//333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值