成人免费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)的區別
責任編輯:于鐵 來源: 阮一峰的博客
相關推薦

2009-06-17 15:01:07

javascript

2022-07-03 08:06:40

JavaScript語言代碼

2024-08-13 15:23:37

2021-08-10 09:57:27

JavaScriptPromise 前端

2025-03-11 07:00:00

數組JavaScript開發

2010-10-08 12:52:33

Javascriptreplace

2010-10-09 09:46:11

indexOf函數JavaScript

2010-10-09 09:56:51

JavaScriptObject對象

2010-10-09 09:18:14

JavaScriptArray對象

2010-10-09 09:10:20

JavaScriptalert

2021-12-29 17:38:17

JavaScripttypeof前端

2021-10-11 10:19:48

Javascript 高階函數前端

2010-10-08 14:31:46

Javascriptsplit函數

2015-04-08 10:27:43

JavaScript字符串操作函數

2024-06-11 14:57:00

2010-10-08 15:00:08

FirefoxJavaScript兼

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技術棧公眾號

主站蜘蛛池模板: 自拍视频网| 日韩免费在线 | 亚洲在线 | 黄色av网站在线观看 | 99福利视频 | 狠狠干五月天 | 午夜国产在线 | 福利片在线 | 国产69精品久久久久777 | 日本精品视频 | 国产一区二区在线播放视频 | 日本在线免费看最新的电影 | 日韩图区 | 亚洲国产欧美在线人成 | 看片网站在线 | 亚洲人在线 | 亚洲有码转帖 | 久久久国产一区二区三区四区小说 | 久草久 | 亚洲精品免费视频 | 日韩一区二区三区在线观看视频 | 成人亚洲视频 | 欧美不卡在线 | 成人在线免费视频观看 | 在线观看国产视频 | 激情三区| 国产精品久久片 | 91电影| 人人九九精 | 国产精品爱久久久久久久 | 91色视频在线观看 | 日韩在线| 久久伊人影院 | 亚洲综合在线一区 | 在线中文字幕亚洲 | 国产日韩欧美 | 国产一区在线免费观看视频 | 91视频18| 蜜臀久久 | 日韩在线免费视频 | 四虎影音 |