有个问题请教各位吧友大佬
javascript吧
全部回复
仅看楼主
level 3
<script>
var name =‘111’
var a={
name:’222’
say:function (){
console. log(this. name)
}
}
var b={
name:’333’
say:function (fun){
fun()
}
}
b. say(a. say)
</script>
或者
<script>
var name =‘111’
var obj={
name:’222’
say:function (){
(function (){
console. log(this. name)
}())
}
}
obj. say()
</script>
为什么console的this 是window?
2020年12月14日 03点12分 1
level 12
this 一般情况(别用call apply等等改变的话)是取决用调用时谁调用了它 它就是谁[吃瓜]
像这种直接调用函数的fun() 函数里面的this一般都是window(严格模式是undefined)
像这样方法调用的a.say()函数里面this一般是是那个对象 也就是 a
2020年12月14日 03点12分 2
一般情况我知道this代指哪个对象 但是这里面。this不是在b. say 方法里嘛。是不是this在立即执行的匿名函数里。所以this应该指这个包裹匿名函数的()或者是b. say这个方法?但这些不是对象类型啊
2020年12月14日 06点12分
@名字好难想啊_0 但是你调用的是fun()呀 函数也可以赋值多个变量或者属性上 而且函数是引用类型的赋值的都是同一个函数 所以函数里面的this是取决于调用的
2020年12月14日 06点12分
@名字好难想啊_0 记住一般情况的this是取决于调用时 不是你赋值在哪就是哪
2020年12月14日 06点12分
@名字好难想啊_0 如果一般的情况(call等等除外)调用时它是没对象的 this一律按window处理比如fn() 或者(function() {this;})()这样的不清楚它的对象的(其实这种行为是怪异的 所以严格模式消除这怪异行为this变成undefined)
2020年12月14日 06点12分
level 1
隐式绑点和隐式丢失。。。
2020年12月14日 15点12分 4
这个[乖]第一次听说 我去查查看
2020年12月15日 00点12分
level 4
除了apply和call,函数调用的this都是指向执行函数的父级。 a.say()和 var d = a.say ;d();
这两个区别你明白吧?根下,任何函数和变量都是挂载在window下的。var d等同于window.d。
另外,如果是局部作用域内的函数和变量,没有指定特定this对象的话,默认this也都指向window。
最后,不建议你去扣这些没意义的东西。干这行就是提出需求解决需求
2020年12月15日 02点12分 5
level 6
《你不知道的JavaScript(上卷)》中就有关于this的很详细的解释,可以去看看。
最后,我十分不赞同有的人关于“扣这些东西没有意义”的说法,一个懂的人,告诉你不用去纠结这些,多可笑。
2020年12月15日 07点12分 6
嗯嗯。我只看了第一部分作用于再看看
2020年12月15日 10点12分
level 1
这闭包。。钓鱼的吧→_→
2020年12月15日 07点12分 7
level 1
您那个调用的自动执行函数他的默认调用着是windows
2020年12月16日 04点12分 8
1