java script this_JavaScript this 關鍵字

JavaScript this 關鍵字

面向對象語言中 this 表示當前對象的一個引用。

但在 JavaScript 中 this 不是固定不變的,它會隨著執行環境的改變而改變。

在方法中,this 表示該方法所屬的對象。

如果單獨使用,this 表示全局對象。

在函數中,this 表示全局對象。

在函數中,在嚴格模式下,this 是未定義的(undefined)。

在事件中,this 表示接收事件的元素。

類似 call() 和 apply() 方法可以將 this 引用到任何對象。

實例

varperson={firstName:"John",lastName:"Doe",id:5566,fullName:function(){returnthis.firstName+""+this.lastName;}};

嘗試一下 ?

方法中的 this

在對象方法中, this 指向調用它所在方法的對象。

在上面一個實例中,this 表示 person 對象。

fullName 方法所屬的對象就是 person。

實例

fullName:function(){returnthis.firstName+""+this.lastName;}

嘗試一下 ?

單獨使用 this

單獨使用 this,則它指向全局(Global)對象。

在瀏覽器中,window 就是該全局對象為 [object Window]:

實例

varx=this;

嘗試一下 ?

嚴格模式下,如果單獨使用,this 也是指向全局(Global)對象。

實例

"use strict";varx=this;

嘗試一下 ?

函數中使用 this(默認)

在函數中,函數的所屬者默認綁定到 this 上。

在瀏覽器中,window 就是該全局對象為 [object Window]:

實例

functionmyFunction(){returnthis;}

嘗試一下 ?

函數中使用 this(嚴格模式)

嚴格模式下函數是沒有綁定到 this 上,這時候 this 是 undefined。

實例

"use strict";functionmyFunction(){returnthis;}

嘗試一下 ?

事件中的 this

在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素:

實例

點我后我就消失了

嘗試一下 ?

對象方法中綁定

下面實例中,this 是 person 對象,person 對象是函數的所有者:

實例

varperson={firstName:"John",lastName:"Doe",id:5566,myFunction:function(){returnthis;}};

嘗試一下 ?

實例

varperson={firstName:"John",lastName:"Doe",id:5566,fullName:function(){returnthis.firstName+""+this.lastName;}};

嘗試一下 ?

說明: this.firstName 表示

this (person) 對象的 firstName 屬性。

顯式函數綁定

在 JavaScript 中函數也是對象,對象則有方法,apply 和 call 就是函數對象的方法。這兩個方法異常強大,他們允許切換函數執行的上下文環境(context),即 this 綁定的對象。

在下面實例中,當我們使用 person2 作為參數來調用 person1.fullName 方法時, this 將指向 person2, 即便它是 person1 的方法:

實例

varperson1={fullName:function(){returnthis.firstName+""+this.lastName;}}varperson2={firstName:"John",lastName:"Doe",}person1.fullName.call(person2);//返回 "John Doe"

嘗試一下 ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

trim函數的作用 $.trim(str)

去掉字符序列左邊和右邊的空格轉載于:https://www.cnblogs.com/dandeliongogo/p/6610890.html

php數據庫備份腳本

// 備份數據庫 $host "localhost"; $user "root"; //數據庫賬號 $password ""; //數據庫密碼 $dbname "mysql"; //數據庫名稱 // 這里的賬號、密碼、名稱都是從頁面傳過來的 if (!mysql_connect($host, $user, $password)) // 連接…

java swing 案例詳解_《Java Swing圖形界面開發與案例詳解》PDF_IT教程網

資源名稱:《Java Swing圖形界面開發與案例詳解》PDF內容簡介:《Java Swing圖形界面開發與案例詳解》全書共20章,其中第1~2章主要介紹有關Swing的基礎知識,包括Swing的基本概述、如何使用IDE開發Swing程序;第…

水晶球錯覺

我注意到人們有時會避免進行徹底的測試。 對于某些人來說,這聽起來像是偽造的,但是請聽我說……我確實理解為什么會這樣。 測試會產生被困的感覺,每引入一個新的測試,負擔就會加重。 建立穩定,無干擾且質量保證的測試套…

Python—day3

1、字符串在C里邊就是字符數組 Python里邊一切事物都是對象,對象則是類創建的 2、set集合 set是一個無序且不能重復的元素集合 #!/usr/bin/env python# encoding: utf-8#set對象不能有重復s1 set()s1.add(alex)print(s1)s1.add(alex)print(s1)s1.add(shidong)print…

iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

當引入第三方的框架的時候 容易產生以下問題: The file “XXX.app” couldn’t be opened because you don’t have permission to view it. 如圖: 造成的原因: info文件中的字段Executable file 與 build settings欄中的Packaging中的Produc…

Google Guava v07范例

我們在TouK舉辦了一個名為“每周技術研討會”的活動,即每個星期五的16:00,每個愿意參加的人都有一個演講。 我們展示了我們在家學習和學習的東西,但是我們也設有一個公告板,上面有人們想聽的話題。 上周MaciejPrchniak談論了Cloju…

推薦一些經過實踐檢驗的學習方法

作者做了多年的Java培訓教師,也接觸過不少初學者,根據多年的教學互動經驗,總結了一些能少走彎路的學習方法,供大家參考。 第一,是要多學多練,這似乎是廢話,但真正能非常上心學習的人還真是少數&…

使JFrame透明

首先創建一個帶有滑塊的框架,該滑塊將用于設置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaultCloseOper…

第一次作業之成員介紹

Lab205的新鮮血液 很理所當然的,實驗室的4枚“小鮮肉”在現代軟工的課程上組成了一個team,作為一個負責的team長,我當然要放上組員們的自述啦!(為什么不是他述,╭(╯^╰)╮,誰讓我是個傲嬌的組長…

java自定義分頁標簽_自定義分頁標簽--仿javaeye分頁效果

效果如圖:1、JSP規范1.1版本后增加了自定義標簽庫。實現自定義標簽的步驟(1)開發自定義標簽處理類。(2)建立*.tld文件。(3)在web.xml中增加自定義標簽的定義。(4)在jsp中使用自定義標簽。2、自定義標簽類(1)繼承javax.servlet.jsp.tagext.TagSupport(2)標簽類屬性&a…

Java隱藏代碼

不久前,我遇到了字符串中不可見字符的問題。 因為它們是不可見的,所以它們確實會引起混亂。 String a "Hello\u200e";String b "Hello\u200f";System.out.println(\ a " and " b " are length " a.length…

201521123052《Java程序設計》第5周學習總結

1. 本周學習總結 1.1 嘗試使用思維導圖總結有關多態與接口的知識點。 1.2 可選:使用常規方法總結其他上課內容。 學習了更多markdown的知識 參考資料: 百度腦圖 XMind 2. 書面作業 作業參考文件下載 1.代碼閱讀:Child壓縮包內源代碼package parent;publi…

Deepin安裝Curl的方法

Deepin安裝Curl的方法 以Deepin為例,只需一條命令即可: sudo apt-get install curl libcurl3 libcurl3-dev php5-curlposted on 2017-09-15 23:22 MissA-VeryGood 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/MissA-VerGood/p/752911…

亞信聯創java面試題_亞信聯創面試題及答案

1. Vector & ArrayList1) Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe),而ArrayList的方法不是,由于線程的同步必然要影響性能,因此,ArrayList的性能比Vector好。2) 當Vector或ArrayList中的元素超過它的初始大小時,…

HTTP協議之http狀態碼詳解

什么是HTTP狀態碼 HTTP狀態碼的作用是:Web服務器用來告訴客戶端,發生了什么事。 狀態碼位于HTTP Response 的第一行中,會返回一個”三位數字的狀態碼“和一個“狀態消息”。 ”三位數字的狀態碼“便于程序進行處理, “狀態消息”更…

有用的Ant構建標簽

問題: 如何在ant文件中執行以下任務? 制作zip文件。 運行命令。 將文件復制到遠程計算機。 在遠程Linux機器上運行命令。 打開輸入框并響應輸入值。 撥打螞蟻電話。 答案: 1.制作zip文件: 以下是在ant中制作zip文件的xml…

poj-2955-Brackets-區間DP

poj-2955-Brackets-區間DP BracketsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9014 Accepted: 4829Description We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a regular brackets sequence,if s …

Python調用(運行)外部程序

在Python中可以方便地使用os模塊運行其他的腳本或者程序,這樣就可以在腳本中直接使用其他腳本,或者程序提供的功能,而不必再次編寫實現該功能的代碼。為了更好地控制運行的進程,可以使用win32process模塊中的函數。如果想進一步控…

Java中已檢查和未檢查的異常

Java有兩種類型的異常-已檢查和未檢查。 簡而言之,選中的是指開發人員可以從異常中合理恢復的情況,而未選中的異常是無法處理的編程錯誤。 本文介紹了何時使用哪種。 但這不是那么簡單–受檢查的異常使代碼變得“丑陋”。 它們迫使開發人員編寫try / cat…