当前位置:首页 > Web开发 > 正文

JS中的this

2024-03-31 Web开发

解析器(浏览器在调用函数时,每次都会向函数内部传递进一个隐含的参数

    这个隐含的参数就是this,this指向的是一个对象

    这个对象我们称为函数执行的  上下文对象

⑵根据函数的调用方式的不同,this会指向不同的对象

       1.以函数的形式调用时,this永远都是window

       2.以方法的形式调用时,this就是调用方法的那个对象

⑶具体示例1:打印this

function fun(){ console.log(this); } fun(); //创建一个对象 var obj = { name:"孙悟空", sayName:fun }; var obj2 = { name:"沙和尚", sayName:fun }; //console.log(obj.sayName == fun);

①obj.sayName();

②obj2.sayName();

效果如下:

以obj调用,结果:

以obj2调用,结果:

⑷具体示例2:打印this.name

function fun(){ console.log(this.name); } fun(); //创建一个对象 var obj = { name:"孙悟空", sayName:fun }; var obj2 = { name:"沙和尚", sayName:fun }; //console.log(obj.sayName == fun); ①obj.sayName(); ②obj2.sayName();

以obj调用,结果:

以obj2调用,结果: 

 结论:this不是固定不变的,调用方式不同,,对象就不同

⑸结合上面例子具体分析:

var name = "全局的name属性";

//obj.sayName();

//以函数形式调用,this是window

fun();

结果:

//以方法的形式调用,this是调用方法的对象

obj.sayName();

结果:

obj2.sayName();

结果:

㈡This实例

this根据调用者的不同,变成不同的值,让我们的程序变得更加的灵活

//创建一个name变量 var name = "全局"; //创建一个fun()函数 function fun(){ console.log(this.name); } //创建两个对象 var obj = { name:"孙悟空", sayName:fun }; var obj2 = { name:"沙和尚", sayName:fun };

//我们希望调用obj.sayName()时可以输出obj的名字

obj.sayName();

结果:

obj2.sayName(); 

结果: 

㈢This的三种情况

1.当以函数的形式调用时,this是window

2.当以方法的形式调用时,谁调用方法this就是谁

3.当以构造函数的形式调用时,this就是新创建的那个对象

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/40856.html