对象属性未定义?

时间:2018-04-13 14:15:43

标签: javascript

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)

它将是控制台ian oliver sullivan和[ undefined ] 为什么?需要帮助:)请

2 个答案:

答案 0 :(得分:1)

第一点,是为什么要记录?是因为你在getName函数中做了一个console.log。

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

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)

注意:如果在控制台中运行此代码。你最后得到一个未定义的,因为我没有给控制台一个变量或值。

答案 1 :(得分:0)

  

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

函数call调用执行getName

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

如果我这样做:

函数getName()不会返回任何值,因此默认情况下会返回undefined