Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.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 这不会返回对象属性(箭头,this)_Javascript_Object_Return_This_Arrow Functions - Fatal编程技术网

Javascript 这不会返回对象属性(箭头,this)

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 = () =>

//console.log(this.name)可以工作,但我无法返回this.name,我有点沮丧

您不是从
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
inside
displayMe
返回此.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());