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

JavaScript類和繼承:this屬性

開發 前端
本文介紹了JavaScript里面的this屬性。這個屬性是理解JavaScript類和繼承的重要基礎。

this屬性表示當前對象,如果在全局作用范圍內使用this,則指代當前頁面對象window; 如果在函數中使用this,則this指代什么是根據運行時此函數在什么對象上被調用。 我們還可以使用apply和call兩個全局方法來改變函數中this的具體指向。

先看一個在全局作用范圍內使用this的例子:

  1. < script type="text/javascript"> 
  2.     console.log(this === window);  // true  
  3.     console.log(window.alert === this.alert);  // true  
  4.     console.log(this.parseInt("021", 10));  // 10  
  5. < /script> 

函數中的this屬性是在運行時決定的,而不是函數定義時,如下:

  1. // 定義一個全局函數  
  2. function foo() {  
  3.     console.log(this.fruit);  
  4. }  
  5. // 定義一個全局變量,等價于window.fruit = "apple";  
  6. var fruit = "apple";  
  7. // 此時函數foo中this指向window對象  
  8. // 這種調用方式和window.foo();是完全等價的  
  9. foo();  // "apple"  
  10.  
  11. // 自定義一個對象,并將此對象的屬性foo指向全局函數foo  
  12. var pack = {  
  13.     fruit: "orange",  
  14.     foo: foo  
  15. };  
  16. // 此時函數foo中this指向window.pack對象  
  17. pack.foo(); // "orange"  
  18.  

全局函數apply和call可以用來改變函數中this屬性的指向,如下:

  1. // 定義一個全局函數  
  2.  function foo() {  
  3.      console.log(this.fruit);  
  4.  }  
  5.    
  6.  // 定義一個全局變量  
  7.  var fruit = "apple";  
  8.  // 自定義一個對象  
  9.  var pack = {  
  10.      fruit: "orange" 
  11.  };  
  12.    
  13.  // 等價于window.foo();  
  14.  foo.apply(window);  // "apple"  
  15.  // 此時foo中的this === pack  
  16.  foo.apply(pack);    // "orange"  
  17.   

注:apply和call兩個函數的作用相同,唯一的區別是兩個函數的參數定義不同。

因為在JavaScript中函數也是對象,所以我們可以看到如下有趣的例子:

  1. // 定義一個全局函數  
  2. function foo() {  
  3.     if (this === window) {  
  4.         console.log("this is window.");  
  5.     }  
  6. }  
  7.  
  8. // 函數foo也是對象,所以可以定義foo的屬性boo為一個函數  
  9. foo.boo = function() {  
  10.     if (this === foo) {  
  11.         console.log("this is foo.");  
  12.     } else if (this === window) {  
  13.         console.log("this is window.");  
  14.     }  
  15. };  
  16. // 等價于window.foo();  
  17. foo();  // this is window.  
  18.  
  19. // 可以看到函數中this的指向調用函數的對象  
  20. foo.boo();  // this is foo.  
  21.  
  22. // 使用apply改變函數中this的指向  
  23. foo.boo.apply(window);  // this is window.  

【編輯推薦】

  1. ExtJS Grid Tooltip的3+1種實現方式總結
  2. JavaScript異步調用框架的鏈式實現
  3. JavaScript異步調用框架的jQuery風格鏈式調用
  4. JavaScript異步調用框架的代碼實現
  5. JavaScript異步調用框架用例設計
責任編輯:yangsai 來源: 博客園
相關推薦

2009-07-08 17:51:45

constructor

2009-07-08 17:48:18

prototype屬性

2011-05-25 16:23:35

Javascript類繼承

2009-01-04 09:08:30

面向對象繼承接口

2011-08-31 14:48:33

JavaScript

2012-02-14 09:45:02

JavaScript

2012-11-08 10:40:47

JavaScript原型鏈

2017-07-21 09:40:35

Python類、繼承和多態

2011-07-08 10:25:55

JavaScript

2009-09-09 11:28:40

Scala類

2011-07-07 13:39:14

Cocoa 框架

2011-08-24 13:56:27

JavaScript

2011-03-10 14:19:56

JavaScript

2021-12-04 11:17:32

Javascript繼承編程

2023-10-18 16:30:50

2010-09-09 09:16:27

JavaScriptdiv

2021-12-09 10:51:47

Go繼承

2023-09-27 23:28:28

Python編程

2020-04-28 10:05:33

JavaScript繼承前端

2016-12-27 09:10:29

JavaScript原型鏈繼承
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产无套一区二区三区久久 | 国产精品久久久久久模特 | 亚洲第1页 | 精品伦精品一区二区三区视频 | 久久久精品一区二区 | 久久综合久色欧美综合狠狠 | 在线观看亚洲精品视频 | 亚洲情侣视频 | 欧美精品在线播放 | 蜜桃av一区二区三区 | 精品久久久久久久 | 伊人操| 国产精品123区 | 亚洲综合五月天婷婷 | 欧美一级淫片007 | 成人欧美一区二区三区黑人孕妇 | 欧美xxxx在线 | 午夜爱爱毛片xxxx视频免费看 | 日韩中文字幕一区 | 天天操操操操操 | 国产你懂的在线观看 | 国产精品视频一区二区三区 | 天堂在线www | aa级毛片毛片免费观看久 | 国产一级片免费在线观看 | 99色综合| 欧美一区2区三区4区公司 | 中文字幕乱码亚洲精品一区 | 狠狠干影院| 日韩有码一区 | 亚洲欧美综合精品久久成人 | 国产欧美精品区一区二区三区 | 国产91成人 | 久在线 | 日本天堂视频 | 精品免费观看 | 中文字幕高清一区 | 日日夜夜草 | 精品国产不卡一区二区三区 | 精品九九 | 99re热精品视频国产免费 |