js基础_32、this
—-解析器(浏览器)在调用函数每次都会向函数内部传递进一个隐含的参数
这个参数就是this,this指向的是一个对象,这个对象我们称为函数执行的上下文对象,根据函数的调用方式不同,this会指向不同的对象。
1,以函数方式调用时,this永远都是指向window。
2,以方法的形式调用时,this就是调用方法的那个对象。
实例代码:
<script>
function fun1(){
console.log(this);
}
var obj={
name:'猪八戒',
sayname:fun1
}
fun1();
obj.sayname();
</script>
结果如下图:
实例:
<script>
var name='孙悟空';
function fun1(){
console.log(this.name);
}
var obj={
name:'猪八戒',
sayname:fun1
}
fun1();//相当于window.fun1();的形式
obj.sayname();
</script>
结果:
以上实例中使用的是同一个方法(函数)对象,只是调用方式不同导致结果不同,本质上都是用的同一个函数对象,代码可证。
<script>
var name='孙悟空';
function fun1(){
console.log(this.name);
}
var obj={
name:'猪八戒',
sayname:fun1
}
console.log(obj.sayname==fun1);
// fun1();
// obj.sayname();
//console.log(obj.sayname());
//console.log(fun1());
</script>
结果,由此可得使用的为同一函数对象:
可以使用this表示当前对象,如下代码所示:不同的调用方式输出的结果不同
<script>
var name='孙悟空';
function fun1(){
console.log(this.name);
}
var obj1={
name:'猪八戒',
sayname:fun1
}
var obj2={
name:'沙和尚',
sayname:fun1
}
fun1();
obj1.sayname();
obj2.sayname();
</script>
结果如下: