Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;这";关于Javascript对象方法_Javascript - Fatal编程技术网

&引用;这";关于Javascript对象方法

&引用;这";关于Javascript对象方法,javascript,Javascript,我对这方面的javascript对象方法和()=>而不是function(){}的实现感到困惑 你能解释一下这种行为吗:谢谢 const obj={ 提案:123, 测试:函数(){ console.log(this.prop); }, 测试2:()=>{ console.log(this.prop); }, } log(test())//结果为123 log(test2())//未定义的结果“this”关键字在调用记录该对象属性(obj.prop)的obj.test()时引用对象上下文。使用

我对这方面的javascript对象方法和()=>而不是function(){}的实现感到困惑

你能解释一下这种行为吗:谢谢

const obj={
提案:123,
测试:函数(){
console.log(this.prop);
},
测试2:()=>{
console.log(this.prop);
},
}
log(test())//结果为123

log(test2())//未定义的结果
“this”关键字在调用记录该对象属性(obj.prop)的obj.test()时引用对象上下文。使用ES6中引入的新方法语法,我们可以省略冒号和function关键字

const obj={
提案:123,
测试(){
console.log(this.prop);
},
测试2:()=>{
console.log(this.prop);
}
}
obj.test()//123
obj.test2()//未定义的
根据箭头,函数不仅用于函数声明的较短语法。这是关于改变这种行为的

在箭头函数中,此不是动态的,它是词法的。它指向周围的范围,这是全局的,因此THIS.prop未定义

正确使用箭头功能的示例:

var controller = {
    makeRequest: function(..){
        btn.addEventListener( "click", () => {
            // ..
            this.makeRequest(..);
        }, false );
    }
};
我们使用arrow函数进行回调。所以我们可以从周围的范围传递这个

如果我们尝试使用常规函数,我们必须使用
var
传递

var controller = {
    makeRequest: function(..){
        var self = this;

        btn.addEventListener( "click", function(){
            // ..
            self.makeRequest(..);
        }, false );
    }
};

箭头函数自动将<代码> < <代码>从父范围绑定到新函数范围。在java中,<<代码>这个< /Cord>关键字在C++、Java或C语言中的行为不象它,有时它对初学者(例如事件侦听器)的行为不可预测。我假设你是“代码> Obj.Test-())/代码>和<代码> Obj.Test2()。在您的示例中
test
test2
不是全局定义的,因此会出现错误。谢谢,伙计,箭头函数()应该用于哪里?我修改了答案,并解释了如果我们使用箭头函数进行方法时会发生什么非常清楚,并且考虑到@sonEtLumiere点,谢谢,,您认为可以使用箭头函数来缩短一些只调用全局上下文属性的代码吗?