我已阅读关于 this 关键字的这段文字:https://bonsaiden.github.io/JavaScript-Garden/#function.this
在第一种情况下this指的是globalobjet,这看起来完全正常,因为当我们有一个箭头函数时,它会自动this与外部作用域中的函数绑定。
var obj = {
foo : () => console.log(this)
}
console.log(obj);
obj.foo()Run Code Online (Sandbox Code Playgroud)
但是,我无法解释以下行为:
function bar(){
this.foo = () => console.log(this)
}
var obj = new bar()
console.log(obj);
obj.foo()Run Code Online (Sandbox Code Playgroud)
现在,this指的是obj而不是global。这是为什么 ?在我看来,将new关键字与构造函数一起使用应该返回一个obj与第一个示例中的对象完全相同的对象。因此箭头函数应该有一个thiswhich 引用global而不是 to obj。您能向我解释一下第二种情况发生了什么吗?
我有一个问题,阻止将新对象添加到数组中,该数组具有与数组中对象的现有元素相同的 id 值。我的数组是这样的:
var arr = [
{id:1, name:'Fabricio'},
{id:2, name:'Leontina'},
{id:3, name:'Rodrigo'}];
Run Code Online (Sandbox Code Playgroud)
如果我想添加这样的对象{id:2; name:'Evander'},由于 id 而无法完成。