先上代码:
<script>
var name="全局";
function fun(){
console.log(name);
}
var obj={
name:"lili",
sayname:fun
};
var obj1={
name:"nana",
sayname:fun
};
fun();
obj.sayname();
</script>
分别定义了三个name:全局、lili、nana,此时fun()在函数内部未找到name,会向上一级(全局)寻找,所以会输出“全局”。我们希望obj.sayname()输出“lili”,但是结果也是“全局”:
15:48:12.676 全局 at 对象.html:123
15:48:13.158 全局 at 对象.html:123
此时可以将fun()函数内console.log(name)改为console.log(obj.name),可以看到“lili”输出:
15:50:10.099 lili at 对象.html:123
15:50:10.570 lili at 对象.html:123
但是,如果此时需要输出“nana”呢?是不是将fun()函数内console.log(obj.name)改为console.log(obj1.name)呢?答案是可以的,输出结果如下:
15:53:00.071 nana at 对象.html:123
15:53:00.539 nana at 对象.html:123
但是这样会不会有点麻烦?有没有一个灵活的方法呢?
可以使用this:
<script>
var name="全局";
function fun(){
console.log(this.name);
}
var obj={
name:"lili",
sayname:fun
};
var obj1={
name:"nana",
sayname:fun
};
// fun();
obj.sayname();
</script>
现在想返回什么,只需要修改该代码段尾部地方即可灵活实现!