Javascript 这不会返回对象属性(箭头,this)
//console.log(this.name)可以工作,但我无法返回this.name,我有点沮丧您不是从Javascript 这不会返回对象属性(箭头,this),javascript,object,return,this,arrow-functions,Javascript,Object,Return,This,Arrow Functions,//console.log(this.name)可以工作,但我无法返回this.name,我有点沮丧您不是从displayMe返回,而是从doSomeEffects返回。displayMe的最后一行是doSomeEffects(),没有返回值。您需要返回doSomeEffects() 箭头函数将使用其声明范围的this。这就是为什么这里的this会指向对象。但要查看该值,您必须更改代码,如下所示: displayMe() { const doSomeEffects = () =>
displayMe
返回,而是从doSomeEffects
返回。displayMe
的最后一行是doSomeEffects()
,没有返回值。您需要返回doSomeEffects()
箭头函数将使用其声明范围的
this
。这就是为什么这里的this
会指向对象。但要查看该值,您必须更改代码,如下所示:
displayMe() {
const doSomeEffects = () => {
if (this.activeEffect === 'fade') {
console.log(this.name); // this.name have accesss and logs
return this.name // return from `doSomeEffect`
}
};
return doSomeEffects(); // return from `displayMe`
}
如果不从displayMe()或doSomeEffects()返回任何内容,则不会显示未定义的。原因是函数默认返回未定义的。要测试这一点:只需运行console.log(“hello”)代码>在开发人员控制台中。这将显示hello和undefined
注意:如果使用函数表达式而不是箭头函数,它将返回undefined。这就是箭头功能的威力。我不确定,但我认为
var std_obj = {
activeEffect : 'fade',
name : 'Jane',
displayMe() {
const doSomeEffects = () => {
if (this.activeEffect === 'fade') {
console.log(this.name); // this.name have accesss and logs
return this.name; //uncomment this
}
};
return doSomeEffects(); //if you do not use return statement, then it will by default return undefined
}
};
console.log(std_obj.displayMe());
这就是你想要做的
doSomeEffects
insidedisplayMe
返回此.name,您正在调用displayMe
我说得对吗?是的,我忘了添加return,所以displayMe()没有返回任何内容,谢谢
var std_obj = {
activeEffect : 'fade',
name : 'Jane',
displayMe() {
const doSomeEffects = () => {
if (this.activeEffect === 'fade') {
console.log(this.name); // this.name have accesss and logs
return this.name; //uncomment this
}
};
return doSomeEffects(); //if you do not use return statement, then it will by default return undefined
}
};
console.log(std_obj.displayMe());
var std_obj = {
activeEffect : 'fade',
name : 'Jane',
displayMe() {
const doSomeEffects = () => {
if (this.activeEffect === 'fade') {
console.log(this.name);
return this.name
}
};
return doSomeEffects();
}
};
console.log(std_obj.displayMe());