Javascript 对象属性未定义?

Javascript 对象属性未定义?,javascript,Javascript,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({na

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'})
这将是伊恩·奥利弗·沙利文和[未定义]
为什么??需要帮助:请

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

第二点,为什么它返回未定义。是因为函数不返回值。也许您可以尝试执行以下操作:

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.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的函数getName

如果我这样做:

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

obj.getName()
obj.getName.call({name:'oliver'})
var fn = obj.getName.call({name:'sullivan'})
函数getName不返回任何值,因此默认情况下将返回undefined。

undefined是console.log的返回值。您的.getName函数不返回任何值,因此函数调用的默认值未定义。请单击并创建mcve]