this面试题

下面代码会打印什么

var name = "222";
var a = {
	name: "111",
	say: function () {
		console.log(this.name);
	}
}
var fun = a.say;
fun();		//222
a.say();	//111

var b = {
	name : "333",
	say: function (func){
		func();
	}
}

b.say(a.say);	//222
b.say = a.say;	
b.say();		//333

倒数第二个为什么会打印222

是因为b的say函数中是直接调用的func(),虽然是在b内,但是func在执行的时候并没有绑定在某个对象上,相当于是全局状况下调用,所以打印 ”222“


this面试题_第1张图片

答案:

打印456

下面这道题有点意思

this面试题_第2张图片

结果

因为this是window

变形:

this面试题_第3张图片

打印结果: 123


this面试题_第4张图片

运行  test   0            5                     0

new  test   0            undefind        0



this面试题_第5张图片

直接报错

‘Hello’ is not defined


JS克隆一个对象(浅拷贝

 this面试题_第6张图片



你可能感兴趣的:(JS基础)