精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

完全搞懂對象方法,"this" 的六項正面與側面

開發 前端
在 JavaScript 中,行為(action)由屬性中的函數來表示。this 的值是在程序運行時得到的。

[[393083]]

一、對象方法,"this"

通常創建對象來表示真實世界中的實體,如用戶和訂單等:

  1. let user = { 
  2.   name"John"
  3.   age: 30 
  4. }; 

 并且,在現實世界中,用戶可以進行 操作:從購物車中挑選某物、登錄和注銷等。

在 JavaScript 中,行為(action)由屬性中的函數來表示。

二、方法示例

剛開始,我們來教 user 說 hello:

  1. let user = { 
  2.   name"John"
  3.   age: 30 
  4. }; 
  5.  
  6. user.sayHi = function() { 
  7.   alert("Hello!"); 
  8. }; 
  9.  
  10. user.sayHi(); // Hello! 

 這里我們使用函數表達式創建了一個函數,并將其指定給對象的 user.sayHi 屬性。

隨后我們像這樣 user.sayHi() 調用它。用戶現在可以說話了!

作為對象屬性的函數被稱為 方法。

所以,在這我們得到了 user 對象的 sayHi 方法。

當然,我們也可以使用預先聲明的函數作為方法,就像這樣:

  1. let user = { 
  2.   // ... 
  3. }; 
  4.  
  5. // 首先,聲明函數 
  6. function sayHi() { 
  7.   alert("Hello!"); 
  8. }; 
  9.  
  10. // 然后將其作為一個方法添加 
  11. user.sayHi = sayHi; 
  12.  
  13. user.sayHi(); // Hello! 
  •  *面向對象編程*
  • 當我們在代碼中用對象表示實體時,就是所謂的 面向對象編程,簡稱為 “OOP”。
  • OOP 是一門大學問,本身就是一門有趣的科學。怎樣選擇合適的實體?如何組織它們之間的交互?這就是架構,有很多關于這方面的書,例如 E. Gamma、R. Helm、R. Johnson 和 J. Vissides 所著的《設計模式:可復用面向對象軟件的基礎》,G. Booch 所著的《面向對象分析與設計》等。

三、方法簡寫

在對象字面量中,有一種更短的(聲明)方法的語法:

  1. // 這些對象作用一樣 
  2. user = { 
  3.   sayHi: function() { 
  4.     alert("Hello"); 
  5.   } 
  6. }; 
  7.  
  8. // 方法簡寫看起來更好,對吧? 
  9. let user = { 
  10.   sayHi() { // 與 "sayHi: function()" 一樣 
  11.     alert("Hello"); 
  12.   } 
  13. }; 

 如上所示,我們可以省略 "function",只寫 sayHi()。

說實話,這種表示法還是有些不同。在對象繼承方面有一些細微的差別(稍后將會介紹),但目前它們并不重要。在幾乎所有的情況下,較短的語法是首選的。

四、方法中的 “this”

通常,對象方法需要訪問對象中存儲的信息才能完成其工作。

例如,user.sayHi() 中的代碼可能需要用到 user 的 name 屬性。

為了訪問該對象,方法中可以使用 this 關鍵字。

this 的值就是在點之前的這個對象,即調用該方法的對象。

舉個例

  1. let user = { 
  2.   name"John"
  3.   age: 30, 
  4.  
  5.   sayHi() { 
  6.     // "this" 指的是“當前的對象” 
  7.     alert(this.name); 
  8.   } 
  9.  
  10. }; 
  11.  
  12. user.sayHi(); // John 

 在這里 user.sayHi() 執行過程中,this 的值是 user。

技術上講,也可以在不使用 this 的情況下,通過外部變量名來引用它:

  1. let user = { 
  2.   name"John"
  3.   age: 30, 
  4.  
  5.   sayHi() { 
  6.     alert(user.name); // "user" 替代 "this" 
  7.   } 
  8.  
  9. }; 

 ……但這樣的代碼是不可靠的。如果我們決定將 user 復制給另一個變量,例如 admin = user,并賦另外的值給 user,那么它將訪問到錯誤的對象。

下面這個示例證實了這一點:

  1. let user = { 
  2.   name"John"
  3.   age: 30, 
  4.  
  5.   sayHi() { 
  6.     alert( user.name ); // 導致錯誤 
  7.   } 
  8.  
  9. }; 
  10.  
  11.  
  12. let admin = user
  13. user = null; // 重寫讓其更明顯 
  14.  
  15. admin.sayHi(); // TypeError: Cannot read property 'name' of null 

 如果我們在 alert 中以 this.name 替換 user.name,那么代碼就會正常運行。

五、“this” 不受限制

在 JavaScript 中,this 關鍵字與其他大多數編程語言中的不同。JavaScript 中的 this 可以用于任何函數,即使它不是對象的方法。

下面這樣的代碼沒有語法錯誤:

  1. function sayHi() { 
  2.   alert( this.name ); 

 this 的值是在代碼運行時計算出來的,它取決于代碼上下文。

例如,這里相同的函數被分配給兩個不同的對象,在調用中有著不同的 “this” 值:

  1. let user = { name"John" }; 
  2. let admin = { name"Admin" }; 
  3.  
  4. function sayHi() { 
  5.   alert( this.name ); 
  6.  
  7. // 在兩個對象中使用相同的函數 
  8. user.f = sayHi; 
  9. admin.f = sayHi; 
  10.  
  11. // 這兩個調用有不同的 this 值 
  12. // 函數內部的 "this" 是“點符號前面”的那個對象 
  13. user.f(); // John(this == user) 
  14. admin.f(); // Admin(this == admin) 
  15.  
  16. admin['f'](); // Admin(使用點符號或方括號語法來訪問這個方法,都沒有關系。) 

 這個規則很簡單:如果 obj.f() 被調用了,則 this 在 f 函數調用期間是 obj。所以在上面的例子中 this 先是 user,之后是 admin。

在沒有對象的情況下調用:this == undefined

我們甚至可以在沒有對象的情況下調用函數:

  1. function sayHi() { 
  2.   alert(this); 
  3.  
  4. sayHi(); // undefined 

 在這種情況下,嚴格模式下的 this 值為 undefined。如果我們嘗試訪問 this.name,將會報錯。

在非嚴格模式的情況下,this 將會是 全局對象(瀏覽器中的 window,我們稍后會在 全局對象 一章中學習它)。這是一個歷史行為,"use strict" 已經將其修復了。

通常這種調用是程序出錯了。如果在一個函數內部有 this,那么通常意味著它是在對象上下文環境中被調用的。

解除 this 綁定的后果

如果你經常使用其他的編程語言,那么你可能已經習慣了“綁定 this”的概念,即在對象中定義的方法總是有指向該對象的 this。

在 JavaScript 中,this 是“自由”的,它的值是在調用時計算出來的,它的值并不取決于方法聲明的位置,而是取決于在“點符號前”的是什么對象。

在運行時對 this 求值的這個概念既有優點也有缺點。一方面,函數可以被重用于不同的對象。另一方面,更大的靈活性造成了更大的出錯的可能。

這里我們的立場并不是要評判編程語言的這個設計是好是壞。而是要了解怎樣使用它,如何趨利避害。

六、箭頭函數沒有自己的 “this”

箭頭函數有些特別:它們沒有自己的 this。如果我們在這樣的函數中引用 this,this 值取決于外部“正常的”函數。

舉個例子,這里的 arrow() 使用的 this 來自于外部的 user.sayHi() 方法:

  1. let user = { 
  2.   firstName: "Ilya"
  3.   sayHi() { 
  4.     let arrow = () => alert(this.firstName); 
  5.     arrow(); 
  6.   } 
  7. }; 
  8.  
  9. user.sayHi(); // Ilya 

 這是箭頭函數的一個特性,當我們并不想要一個獨立的 this,反而想從外部上下文中獲取時,它很有用。在后面的 深入理解箭頭函數 一章中,我們將深入介紹箭頭函數。

七、總結

  • 存儲在對象屬性中的函數被稱為“方法”。
  • 方法允許對象進行像 object.doSomething() 這樣的“操作”。
  • 方法可以將對象引用為 this。

this 的值是在程序運行時得到的。

  • 一個函數在聲明時,可能就使用了 this,但是這個 this 只有在函數被調用時才會有值。
  • 可以在對象之間復制函數。
  • 以“方法”的語法調用函數時:object.method(),調用過程中的 this 值是 object。

請注意箭頭函數有些特別:它們沒有 this。在箭頭函數內部訪問到的 this 都是從外部獲取的。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2010-09-14 21:47:05

2012-04-29 11:24:09

iPhone

2017-11-27 08:43:00

ERP管理數字化

2024-01-03 14:07:06

技術ChatGPTIT

2010-09-26 09:04:44

2017-02-06 07:41:12

2020-05-19 10:20:19

物聯網新商業技術

2021-08-19 16:08:24

高級威脅網絡安全網絡攻擊

2025-01-06 15:00:00

Python裝飾器代碼

2010-08-31 15:03:18

網絡釣魚

2022-02-07 12:24:00

安全技術網絡安全

2015-10-21 13:10:49

2016-09-30 10:30:12

2012-07-10 09:39:28

2016-09-02 14:38:55

物聯網

2017-10-11 08:51:50

Ruby編程微服務架構邊緣計算

2015-10-10 09:45:28

AWSAWS re:Inve云遷移

2017-02-24 07:23:00

深度學習方向預測

2016-12-06 08:20:27

科技新聞早報

2023-03-16 07:43:59

技術變革企業
點贊
收藏

51CTO技術棧公眾號

国产精品人人爽| 亚洲乱码国产乱码精品精大量 | 亚洲欧美成人一区二区在线电影| 日韩a级在线观看| 好吊色一区二区| 久久先锋影音| 色久欧美在线视频观看| www.国产福利| 爱情岛论坛亚洲品质自拍视频网站| 丰满白嫩尤物一区二区| 欧洲精品在线视频| 999精品久久久| 亚洲2区在线| 色悠悠久久综合| 91免费网站视频| 欧美一区二区三区激情| 日本成人中文字幕在线视频| 欧美成人在线网站| 2025中文字幕| 亚洲成人va| 亚洲一二三区不卡| 日本一区免费| 亚洲欧美另类综合| 麻豆精品一区二区三区| 国外成人在线播放| 国产3级在线观看| 成人黄色av网址| 欧美日韩精品欧美日韩精品一 | 自拍偷拍精品| 欧美成人激情免费网| 欧美黑人又粗又大又爽免费| 国产www视频在线观看| 国产三级精品三级| 国产成人精品一区二区三区福利 | 麻豆视频在线播放| 久久亚洲精华国产精华液| 亚洲综合精品一区二区| 波多野结衣电车痴汉| 亚洲黄色三级| 久久国产精品亚洲| 99久久99久久精品免费看小说.| 国产精品超碰| 欧美在线观看视频一区二区三区| 成人免费视频91| 日本蜜桃在线观看| 国产免费久久精品| 久久久久久久有限公司| 亚洲国产精彩视频| 国产一区二区三区在线看麻豆| 国产精品99久久99久久久二8| 香蕉免费毛片视频| 欧美一区综合| 久久久国产影院| 九九热久久免费视频| 欧美人妖在线| 亚洲毛片在线看| 中文字幕精品视频在线| 成人精品毛片| 精品日韩一区二区三区免费视频| 九九热精品国产| 欧美大陆国产| 精品视频免费看| 日本激情综合网| www.26天天久久天堂| 色88888久久久久久影院野外| 欧美牲交a欧美牲交| 免费看男女www网站入口在线| 亚洲成人av资源| 大j8黑人w巨大888a片| 成人超碰在线| 天天影视网天天综合色在线播放| 国产3p露脸普通话对白| 2021天堂中文幕一二区在线观| 亚洲国产你懂的| 日本十八禁视频无遮挡| 瑟瑟视频在线看| 狠狠综合久久av一区二区小说| 成熟丰满熟妇高潮xxxxx视频| 女厕盗摄一区二区三区| 色婷婷久久一区二区三区麻豆| 国产免费999| 欧美日韩伦理一区二区| 欧美福利视频一区| 日本人妻一区二区三区| 国内精品偷拍| 亚洲区在线播放| 天天操天天摸天天舔| 亚洲电影在线一区二区三区| 欧美国产日韩在线| 国产精品午夜影院| 日韩电影免费一区| 国产在线久久久| 性猛交富婆╳xxx乱大交天津| bt7086福利一区国产| 日韩精品久久一区| 国产精品va在线观看视色| 亚洲一级不卡视频| 毛片一区二区三区四区| 国产亚洲精彩久久| 欧美mv和日韩mv国产网站| avtt香蕉久久| 三区四区不卡| 午夜精品久久久久久99热| 欧美日韩a v| 国产精品99久久久久久似苏梦涵 | 久久久久久久久91| 国产99免费视频| 国产激情偷乱视频一区二区三区| 精品一区二区不卡| 黄色片网站在线观看| 天天综合色天天| 久久精品一卡二卡| 九色精品国产蝌蚪| 欧美成人精品在线| 无码日韩精品一区二区| 国产99久久久国产精品潘金| 欧美视频观看一区| 色噜噜狠狠狠综合欧洲色8| 色婷婷久久久综合中文字幕 | а天堂中文最新一区二区三区| 亚洲аv电影天堂网| 免费91在线观看| 亚洲作爱视频| 96成人在线视频| av小片在线| 欧美视频精品一区| 国产乱国产乱老熟300部视频| 欧美日韩一二| 亚洲3p在线观看| av一级黄色片| 国产精品国产a| 免费在线a视频| 一区二区三区国产好| 在线国产精品视频| √资源天堂中文在线| 国v精品久久久网| 在线免费观看成人| 日本一区免费网站| 亚洲精品在线三区| 欧美久久久久久久久久久久| 久久成人免费网站| 奇米影视首页 狠狠色丁香婷婷久久综合 | 亚洲成人网av| 欧美黄片一区二区三区| 韩国午夜理伦三级不卡影院| 午夜精品区一区二区三| 午夜精品成人av| 亚洲精品97久久| 国产精品第72页| 国产风韵犹存在线视精品| 天天做天天爱天天高潮| 激情久久99| 最新中文字幕亚洲| 伊人久久成人网| 亚洲国产精华液网站w| 成人免费无码av| 久久最新网址| 国产97在线视频| 国产毛片在线看| 91国产免费看| 国产三级短视频| 麻豆精品在线观看| 国产又黄又爽免费视频| 懂色av色香蕉一区二区蜜桃| 久久精品99久久久香蕉| 国产精品无码AV| 亚洲精品国产高清久久伦理二区 | 成人免费毛片app| av网站大全免费| 精品网站aaa| 4438全国成人免费| 精品视频二区| 欧美色图天堂网| 国产在线观看免费视频软件| 黄页网站大全一区二区| 超碰97在线看| 国产福利资源一区| 热re91久久精品国99热蜜臀| 极品美乳网红视频免费在线观看| 欧美亚洲综合另类| 久久精品一区二区三区四区五区 | 国产精品久久久久久久久久ktv| 成年人在线免费观看| 欧美日韩久久不卡| 久久无码精品丰满人妻| 99久久婷婷国产综合精品电影 | 欧美日韩高清一区| 麻豆疯狂做受xxxx高潮视频| 9久草视频在线视频精品| 91国视频在线| 久久精品不卡| 99久久久久国产精品免费| 九色porny丨入口在线| 国产亚洲精品综合一区91| 国产乱色精品成人免费视频| 亚洲成人av中文| 伊人影院综合网| 国产成人综合亚洲91猫咪| 日日鲁鲁鲁夜夜爽爽狠狠视频97 | 福利一区福利二区| 逼特逼视频在线| 99成人在线视频| 国产日韩欧美一区二区| 二吊插入一穴一区二区| 欧美另类极品videosbestfree| 色婷婷在线视频| 欧美日韩一区二区三区四区| 免费人成年激情视频在线观看| 久久亚洲精精品中文字幕早川悠里 | gogo久久| 中文字幕精品视频| 欧美综合视频在线| 欧美年轻男男videosbes| 国产无精乱码一区二区三区| 中文字幕av资源一区| 亚洲少妇一区二区三区| 热久久一区二区| 成人免费观看cn| 亚洲a在线视频| 欧美一区二区影视| 成人爽a毛片免费啪啪红桃视频| 国产精品露脸自拍| 手机av在线| 欧美富婆性猛交| 天堂地址在线www| 亚洲人成网站在线播| 黄色一级a毛片| 3751色影院一区二区三区| 免费的毛片视频| 亚洲图片欧美色图| 暗呦丨小u女国产精品| 欧美国产精品一区二区| 黄色正能量网站| 不卡免费追剧大全电视剧网站| 欧美性受xxxxxx黑人xyx性爽| 男女av一区三区二区色多| 91成人综合网| 综合天堂久久久久久久| 亚洲精品高清视频| 嫩草国产精品入口| 国产一区二区免费在线观看| 视频一区中文字幕精品| 91沈先生在线观看| 久久亚洲精品人成综合网| 国产成人欧美在线观看| 蜜桃视频m3u8在线观看| 26uuu另类亚洲欧美日本一| www.超碰在线| 午夜免费日韩视频| av2020不卡| 国模极品一区二区三区| 欧美黑人xx片| 欧美—级高清免费播放| 先锋成人av| 欧美黄色性视频| 污的网站在线观看| 欧美国产中文字幕| 精灵使的剑舞无删减版在线观看| 欧美日韩福利电影| 成年人视频免费在线播放| 欧美精品videossex88| 丰满诱人av在线播放| 久久久久中文字幕| xxx在线免费观看| 97香蕉超级碰碰久久免费软件 | 神马久久久久久久久久| 精品黑人一区二区三区久久| 亚洲狼人综合网| 亚洲国产精品人久久电影| 天堂中文在线观看视频| 亚洲免费精彩视频| 二区三区在线播放| www.久久撸.com| 1769免费视频在线观看| 高清欧美一区二区三区| 擼擼色在线看观看免费| 日韩免费在线播放| 免费成人毛片| 亚洲影视九九影院在线观看| 99国产精品久久一区二区三区| 国产一区二区精品在线| 欧美精品系列| 精品一区二区成人免费视频 | 欧美成人黑人猛交| 奇米精品一区二区三区在线观看| 午夜精品免费看| 国产成人啪午夜精品网站男同| 国产国语老龄妇女a片| 99re成人在线| 纪美影视在线观看电视版使用方法| ㊣最新国产の精品bt伙计久久| 精品少妇爆乳无码av无码专区| 亚洲图片欧美综合| 亚洲国产精品无码久久久| 5858s免费视频成人| 日韩一级免费毛片| 欲色天天网综合久久| av网站大全在线| 欧美在线观看日本一区| 亚洲人成777| 国产伦精品一区二区三区| 精品国产a一区二区三区v免费| 男插女免费视频| 国产日韩欧美一区| 色综合五月婷婷| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲优女在线| 国产在线精品自拍| 精品网站aaa| 天天成人综合网| 午夜亚洲伦理| 成年人看片网站| 国产欧美精品在线观看| 精品视频在线观看免费| 欧美日韩中文一区| 四虎在线视频免费观看| 日韩资源在线观看| 成人香蕉视频| 97人人干人人| 91中文字幕精品永久在线| 人妻熟妇乱又伦精品视频| 国产精品一区一区| 手机看片福利视频| 亚洲国产精品一区二区www| 进去里视频在线观看| 亚洲精品久久久久久久久久久久| 国产福利视频在线| 国产精品三级久久久久久电影| 免费观看成人www动漫视频| 青青视频免费在线| 久久精品久久精品| 久操视频在线观看免费| 精品久久中文字幕| 欧美一级在线免费观看| 久久成人精品视频| 日本久久二区| 视频一区免费观看| 久久精品一本| 亚洲精品女人久久久| 亚洲五码中文字幕| 蜜桃视频污在线观看| 欧美风情在线观看| 一区二区三区在线资源| 久久最新免费视频| 激情综合色播激情啊| 欧美一区二区三区观看| 在线日韩一区二区| 国产精品二线| 国产成人福利网站| 九九热精品视频在线观看| 亚洲 欧美 日韩 国产综合 在线| 粉嫩aⅴ一区二区三区四区| 欧美成人aaa片一区国产精品| 欧美丰满嫩嫩电影| 含羞草www国产在线视频| 91精品久久久久久久久久另类| 色一区二区三区四区| 性生活免费在线观看| 国产精品无码永久免费888| 中文字幕自拍偷拍| 中文字幕精品av| 亚洲国产天堂| 99热一区二区三区| 国产盗摄一区二区三区| 免费在线一级片| 精品第一国产综合精品aⅴ| 国产h片在线观看| 老司机精品福利在线观看| 久久精品亚洲| 娇小11一12╳yⅹ╳毛片| 91精品国产91久久久久久一区二区| 99在线视频观看| 国产精品伊人日日| 亚洲综合日本| 妖精视频在线观看免费| 欧美另类变人与禽xxxxx| 在线三级电影| 激情小说网站亚洲综合网| 久久激情网站| 亚洲天堂精品一区| 欧美一级淫片007| xxx.xxx欧美| 欧美成人在线免费观看| 人禽交欧美网站| 久久久久久久久久久久久久免费看 | 国产精品18久久久久久久久| 久久99久久98精品免观看软件| 日韩极品精品视频免费观看| 色成人免费网站| 四虎免费在线观看视频| caoporn国产一区二区| 最近国语视频在线观看免费播放| 理论片在线不卡免费观看| 国产一区丝袜| 亚洲国产精品毛片av不卡在线| 亚洲欧美国产三级| 香港三日本三级少妇66| 国产欧美亚洲精品| 亚洲日本激情| 羞羞在线观看视频|