VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > JavaScript教程 >
  • js中 this 的指向


js中 this的指向一共存在3种地方:

1.全局的this;

2.构造函数的this;

3.call/apply;

回到顶部

一、全局的this:

复制代码
 1 function test(){
 2     this.d = 3;//函数的默认指向是window
 3     var a = 1;
 4     function c(){
 5     }
 6 }
 7 
 8 test(123);
 9 console.log(window.d);
10 console.log(this.d);//this 默认指向window
复制代码

这里有两个点:函数的默认指向是window;全局this 指向 window;

预编译的过程:

 ao:
     this : window
     a
     c :function c(){}
    
    go:
        test :function test(){}

这里的两个console.log输出的都是3

回到顶部

二、构造函数中this的指向:

1     function Test(){
2         this.name = "123";
3         }
4     var test = new Test();

这里的预编译过程是这样的:

GO:Test :function Test(){};

AO:

第一次:this {window};

当new了之后: this : {name:123; __proto__:Test.prototype}

回到顶部

三、call/apply改变this的指向

复制代码
 1 //call/apply 改变this指向
 2 function Person(){
 3         this.name = "张三";
 4         this.age = 18
 5     }
 6 function Programmer(){
 7     Person.apply(this);
 8     this.work = "Progarmming";
 9 }    
10 
11 var p = new Programmer();
12 console.log(p);
复制代码

根据前面的介绍,可知:Person.apply(this);中this 是指向Programmer的实例化对象,  此处 的this也替换了Person 实例化对象;所以 最后输出就是:
{name: "张三", age: 18, work: "Progarmming"}

 

回到顶部

总结:

1.全局this 指向 window

2.预编译函数 this指向window

3.构造函数的this 指向实例化对象

4.apply/call改变this的指向

 

回到顶部

补充:js中 this 和 $(this)的区别

this是html中返回的类集合([object HTMLImageElement]),而$(this)返回的是Jquery的集合([object Object ])

以下例子是以https://www.miaov.com/网站为页面的一个例子;

复制代码
 1 $(".menu ul").each(function(){
 2 var a = $(this);
 3 var b = this
 4 //test(a.text());
 5 debugger
 6 test(b.innerText);
 7 })
 8 
 9 function test(obj){
10 alert(obj);
11 }
复制代码

这里当获取 ul的值,两种方式去取;

 

 

 

 


 

我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。 我要做一个自由又自律的人,靠势必实现的决心认真地活着。
来源:https://www.cnblogs.com/lixiuming521125/p/11133265.html

相关教程