日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JavaScript類和繼承:this屬性

this屬性表示當前對象,如果在全局作用范圍內使用this,則指代當前頁面對象window; 如果在函數(shù)中使用this,則this指代什么是根據(jù)運行時此函數(shù)在什么對象上被調用。 我們還可以使用apply和call兩個全局方法來改變函數(shù)中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> 

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

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

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

 
 
 
  1. // 定義一個全局函數(shù)  
  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兩個函數(shù)的作用相同,唯一的區(qū)別是兩個函數(shù)的參數(shù)定義不同。

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

 
 
 
  1. // 定義一個全局函數(shù)  
  2. function foo() {  
  3.     if (this === window) {  
  4.         console.log("this is window.");  
  5.     }  
  6. }  
  7.  
  8. // 函數(shù)foo也是對象,所以可以定義foo的屬性boo為一個函數(shù)  
  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. // 可以看到函數(shù)中this的指向調用函數(shù)的對象  
  20. foo.boo();  // this is foo.  
  21.  
  22. // 使用apply改變函數(shù)中this的指向  
  23. foo.boo.apply(window);  // this is window.  

文章名稱:JavaScript類和繼承:this屬性
文章轉載:http://www.5511xx.com/article/cdejisp.html