1. this存在哪里?
this在日常开发中给人一种它好像用的不多,但是又好像无处不在的错觉。但是它确实无处不在。
它是一个特殊的关键字,被自动定义在所有函数的作用域中。
2. 为什么要用this?
先说结论:希望在函数可以自动引用合适的上下文对象。
先放不用this的代码:
function upper(context) {
return context.name.toUpperCase()
}
function speak(context) {
var greet = "你好,我是" + upper(context)
console.log(greet);
}
var me = {
name: 'Bob'
}
var you = {
name: "Kyle"
}
console.log(upper(me)); // BOB
console.log(upper(you)); // KYLE
speak(me) // 你好,我是BOB
speak(you) // 你好,我是KYLE
上面代码中通过将对象由形参的方式传递给函数,然后在函数内手动获取到此对象形参的属性进行操作。
下面放上使用this的代码:
function upper() {
return this.name.toUpperCase()
}
function speak() {
var greet = "你好,我是" + upper.call(this)
console.log(greet);
}
var me = {
name: 'Bob'
}
var you = {
name: "Kyle"
}
console.l