成人免费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

2017-07-21 09:40:35

Python類、繼承和多態

2012-11-08 10:40:47

JavaScript原型鏈

2009-09-09 11:28:40

Scala類

2011-07-08 10:25:55

JavaScript

2011-07-07 13:39:14

Cocoa 框架

2011-03-10 14:19:56

JavaScript

2021-12-04 11:17:32

Javascript繼承編程

2011-08-24 13:56:27

JavaScript

2023-10-18 16:30:50

2010-09-09 09:16:27

JavaScriptdiv

2021-12-09 10:51:47

Go繼承

2020-04-28 10:05:33

JavaScript繼承前端

2016-12-27 09:10:29

JavaScript原型鏈繼承

2023-09-27 23:28:28

Python編程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区免费网站 | 一二区视频| 免费看国产片在线观看 | 999久久 | 中文字幕在线观看日韩 | 亚洲精品免费看 | 91成人在线| 在线免费观看a级片 | 免费一级毛片 | 欧美高清成人 | 三级在线免费 | 一区二区三区视频在线观看 | 久久久久久久一区二区 | 亚洲精品国产偷自在线观看 | 亚洲日韩第一页 | 免费看a | wwwxxx日本在线观看 | 欧美在线不卡 | 国产欧美日韩综合精品一区二区 | 真人一级毛片 | 超黄视频网站 | 国产精品一区二区不卡 | 国产精品久久久久一区二区三区 | 97caoporn国产免费人人 | 欧美日韩免费在线 | 超碰天天| 成人免费观看男女羞羞视频 | 久久久久久久国产精品 | 黄色毛片在线观看 | 欧美午夜精品理论片a级按摩 | 国产精品日日做人人爱 | 欧美日韩一区在线播放 | 亚洲综合久久久 | 精品久久网 | 亚洲一区不卡在线 | 99爱在线 | 精品久久一| 91亚洲精选 | 91精品国产一区二区三区香蕉 | 一区二区三区在线 | 九色porny自拍视频 |