第一题
<script>
window.name = 'ByteDance';
function A(){
this.name = 123;
}
A.prototype.getA = function(){
console.log(this);//this代表window
return this.name +1;//ByteDance1
}
let a = newA();
let funcA = a.getA;
console.log(a.getA);//fn(){}
funcA();
</script>
第二题
<script>
var length = 10;
function fn(){
return this.length + 1;
}
var obj = {
length:5,
test1:function(){
return fn();
}
}
obj.test2 = fn;
console.log(obj.test());//11
console.log(fn()===obj.test2());//false 11!=6
console.log(obj.test1()==obj.test2());//false 11!=6
</script>
第三题
<script>
function Foo(){
getName = function(){
console.log(1)//注意是全局的
}
return this;
}
Foo.getName = function(){
console.log(2)
}
Foo.prototype.getName = funcytion(){
console.log(3)
}
var getName = function(){
console.log(4)
}
function getName(){
console.log(5)
}
Foo.getName();//2
getName();//4
Foo().getName();//1
getName();//1
new Foo().getName();//3
</script>
第四题
<script>
var o = {
a:10,
b:{
fn:function(){
console.log(this.a);//undefined
console.log(this);//b
}
}
}
o.b.fn();
</script>