这里理解this(笔记)
1. 例子一
const obj = {
name: '',
x: function() {
console.log('你好', name)
}
}
// 1. 这里怎么拿到 name
// 2. 现在是拿不到的
// 3. 有人会想, this.name, 如果没有this呢
// 3. 那会就是下面这样
const obj = {
name: '',
x: function() {
console.log('你好', obj.name)
}
}
// 4. 但是又不对了, 如果代码是这样的呢??
{
name: '',
x: function() {
console.log('你好', obj.name)
}
}
// 5. 前面那样要是不对, 要是这样的呢???????
const fun = ({
name: '',
x: function() {
console.log('你好', obj.name)
}
}) => {}
// 6. 现在没有对象名字吧, 所以怎么拿到name
例子二
// 可能js之父是这样想的(大概是下面这么个意思, 方便理解this吧, 往下看)
// 发明js的时候, 例如: python遇到这种情况这样解决的(这我也不确定)
const obj = {
name: '1111',
x: fun
}
const fun = function (self, arg) {
console(self.name, arg)
}
// 假设当前没this
obj.x(obj, '参数')
// 1. 这就是python的想法, 通过吧第一个参数当成this
// 2. 然后js之父感觉这样有些初级选手看不懂, 就把self隐藏起来, 不显示的是传
### 3. 就是函数直接调用如 fun(), self就隐式传空, 通过对象调用, self就传obj
// 3. 但是还不行, 还有些人理解不行, 就想了call()这个方法, 去传一个this, 也就是刚才的self参数加上你想传的参数,所以就有了this的6中情况, 其实this可以有好多情况, 随便举例就是this的特殊情况
// 4. 所以箭头函数没有this, 就是他不能隐式的传self这样的参数, 也没有argments