【问题标题】:An object attribut is undefined?对象属性未定义?
【发布时间】:2018-04-13 14:15:43
【问题描述】:
var obj = {
    name:'ian',
    getName(){
        console.log(`inside:${this.name}`)
    }
}

obj.getName()
obj.getName.call({name:'oliver'})
var fn = obj.getName.call({name:'sullivan'})

console.log 是 ian olive 和 sullivan,但我不明白,为什么?我没有控制台 fn,为什么它可以输出 'sullivan'?如果我这样做:

var obj = {
    name:'ian',
    getName(){
        console.log(`inside:${this.name}`)
    }
}

obj.getName()
obj.getName.call({name:'oliver'})
var fn = obj.getName.call({name:'sullivan'})
console.log(fn)

将是 console ian Oliver sullivan 和 [undefined] 为什么??需要帮助 :) 请

【问题讨论】:

  • undefinedconsole.log 的返回值。
  • 你的.getName()函数没有返回任何东西,所以函数调用的默认值为undefined
  • 请点击<>并创建一个mcve]

标签: javascript


【解决方案1】:

第一点,为什么要记录?是因为您在 getName 函数中执行了 console.log。

返回未定义的第二点。是因为你的函数没有返回值。也许您尝试执行以下操作:

var obj = {
    name:'ian',
    getName(){
         return this.name;
    }
}
console.log(obj.getName());
console.log(obj.getName.call({name:'oliver'}));
var fn = obj.getName.call({name:'sullivan'})
console.log(fn)

注意:如果您在控制台中运行此代码。最后你会得到一个 undefined,因为我没有将变量或值返回给控制台。

【讨论】:

    【解决方案2】:

    console.log 是 ian olive 和 sullivan,但我不明白,为什么?我没有控制台 fn,为什么它可以输出 'sullivan'?如果我这样做:

    函数call调用函数getName执行console.log

    getName(){
       console.log(`inside:${this.name}`)
    }  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    

    如果我这样做:

    函数getName()不返回任何值,所以默认返回undefined

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-03
      • 2012-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      相关资源
      最近更新 更多