成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Javascript的this用法

開發 前端
Javascript是一門基于對象的動態語言,Javascript可以通過一定的設計模式來實現面向對象的編程,其中this指針就是實現面向對象的一個很重要的特性。本文分四種情況介紹了this的用法,一起來看。

thisJavascript語言的一個關鍵字。

它代表函數運行時,自動生成的一個內部對象,只能在函數內部使用。比如,

 

  1. function test()  
  2. {  
  3. this.x = 1;  

 

隨著函數使用場合的不同,this的值會發生變化。但是有一個總的原則,那就是this指的是,調用函數的那個對象。

下面分四種情況,詳細討論this的用法。

情況一:純粹的函數調用

這是函數的最通常用法,屬于全局性調用,因此this就代表全局對象Global。

請看下面這段代碼,它的運行結果是1。

 

  1. function test()  
  2. {  
  3. this.x = 1;  
  4. alert(this.x);  
  5. }  
  6. test(); // 1 

 

為了證明this就是全局對象,我對代碼做一些改變:

 

  1. var x = 1;  
  2. function test()  
  3. {  
  4. alert(this.x);  
  5. }  
  6. test(); // 1 

 

運行結果還是1。再變一下:

 

  1. var x = 1;  
  2. function test()  
  3. {  
  4. this.x = 0;  
  5. }  
  6. test();  
  7. alert(x); //0 

 

情況二:作為對象方法的調用

函數還可以作為某個對象的方法調用,這時this就指這個上級對象。

 

  1. function test()  
  2. {  
  3. alert(this.x);  
  4. }  
  5. var o = {};  
  6. o.x = 1;  
  7. o.m = test;  
  8. o.m(); // 1 

 

情況三 作為構造函數調用

所謂構造函數,就是通過這個函數生成一個新對象(object)。這時,this就指這個新對象。

 

  1. function test()  
  2. {  
  3. this.x = 1;  
  4. }  
  5. var o = new test();  
  6. alert(o.x); // 1 

 

運行結果為1。為了表明這時this不是全局對象,我對代碼做一些改變:

 

  1. var x = 2;  
  2. function test()  
  3. {  
  4. this.x = 1;  
  5. }  
  6. var o = new test();  
  7. alert(x); //2 

 

運行結果為2,表明全局變量x的值根本沒變。

情況四 apply調用

apply()是函數對象的一個方法,它的作用是改變函數的調用對象,它的第一個參數就表示改變后的調用這個函數的對象。因此,this指的就是這第一個參數。

 

  1. var x = 0;  
  2. function test()  
  3. {  
  4. alert(this.x);  
  5. }  
  6. var o={};  
  7. o.x = 1;  
  8. o.m = test;  
  9. o.m.apply(); //0 

 

apply()的參數為空時,默認調用全局對象。因此,這時的運行結果為0,證明this指的是全局對象。

如果把最后一行代碼修改為

 

  1. o.m.apply(o); //1 

 

運行結果就變成了1,證明了這時this代表的是對象o。

原文地址:http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html

【編輯推薦】

  1. Javascript的this關鍵字與scope詳解
  2. C++中的this指針
  3. C# this關鍵字詳解
  4. PHP關鍵字this指向當前對象指針
  5. jQuery中this與$(this)的區別
責任編輯:于鐵 來源: 阮一峰的博客
相關推薦

2022-07-03 08:06:40

JavaScript語言代碼

2009-06-17 15:01:07

javascript

2021-08-10 09:57:27

JavaScriptPromise 前端

2024-08-13 15:23:37

2025-03-11 07:00:00

數組JavaScript開發

2010-10-09 09:18:14

JavaScriptArray對象

2010-10-09 09:10:20

JavaScriptalert

2021-10-11 10:19:48

Javascript 高階函數前端

2010-10-08 12:52:33

Javascriptreplace

2010-10-09 09:46:11

indexOf函數JavaScript

2010-10-09 09:56:51

JavaScriptObject對象

2021-12-29 17:38:17

JavaScripttypeof前端

2010-10-08 14:31:46

Javascriptsplit函數

2015-04-08 10:27:43

JavaScript字符串操作函數

2010-10-08 15:00:08

FirefoxJavaScript兼

2024-06-11 14:57:00

2025-03-11 07:30:00

雙問號操作符JavaScript開發

2010-10-08 09:52:18

JavaScript匿

2015-03-02 09:22:09

Javascript函數用法apply

2010-10-08 09:17:07

JavaScript表JavaScript運
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91视频一区二区三区 | 成人在线视频一区 | 欧美一级久久 | 久久久久久网站 | 国产激情91久久精品导航 | 在线一区观看 | 在线观看中文字幕av | 国产成人免费视频网站高清观看视频 | 中文字幕久久久 | 亚洲日韩中文字幕一区 | 在线国产视频 | 亚洲天堂影院 | 中文字幕日韩一区 | 免费av观看| 国产第一区二区 | 自拍偷拍3p | 国产免费一区二区 | 国产日韩精品久久 | 北条麻妃国产九九九精品小说 | 亚洲视频一区二区三区四区 | 日韩一区二区福利视频 | 久久久久国产精品一区二区 | 国产精品久久久久国产a级 欧美日本韩国一区二区 | 亚洲激情网站 | 自拍偷拍第一页 | 一区二区三区中文字幕 | 超碰人人在线 | 美女视频一区二区三区 | 天堂综合网久久 | 精品视频一区在线 | 精品不卡| 成人在线看片 | 黄色免费网站在线看 | 婷婷色国产偷v国产偷v小说 | 亚洲黄色av网站 | 中日韩av | 中文字幕爱爱视频 | 日韩乱码一二三 | 99re在线视频观看 | 日日噜噜噜夜夜爽爽狠狠视频, | 国产成人短视频在线观看 |