首页 > 试题广场 >

写出以下代码执行后 console.log 打印出的结果,并

[问答题]
写出以下代码执行后 console.log 打印出的结果,并解释原因
推荐
obj A awesome
obj B wierd
lame
编辑于 2017-05-23 17:15:07 回复(0)
obj Aawesome
obj Bwierd

解:
console.log(obj.print('awesome'))此处this指的是调用print方法的对象obj。故输出obj Aawesome;
var b=obj;此处定义了b指向了obj,是地址引用;所以b.desc='obj B';即obj.desc='obj B',所以console.log(obj.print('wierd'));输出obj Bwierd。
var func=obj.print;相当于定义了
func=function(msg){
    return [this.desc,msg].join('');
}
于是console.log(func.call());用call方法修改了其作用域,this指的是window,但没有传入实参,即msg为空。相当于['lame',].join(''),按理说结果应该是lame啊,可我调试了啥也没输出!!!求解!!
发表于 2017-08-02 15:39:50 回复(1)