|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 今天將和大家分享JavaScript中一個重要知識點this,有一定的參考價值,希望對大家學習有所幫助。對于this關鍵字的學習經常讓我們感到困惑,搞不清楚它在函數中指代的是什么以及如何去使用它,今天將在文章中為大家詳細介紹有關this的知識 【推薦課程:JavaScript教程】 上下文和this關鍵字 在JavaScript中,函數有自己的執行上下文,在這里要特別注意下函數的執行上下文不是關于它是如何聲明的,也不是說函數的作用,而是關于如何在代碼中調用它,我們在調用此執行上下文時就會用到this。當this從函數內部訪問時,實際上就是訪問其執行上下文。 調用函數方式與this 上下文取決于函數的調用方式,我們可以通過4種不同的方式來調用上下文的函數,因此this也有四種不同的指向 1. 一個基本的函數調用 2. 使用上下文對象調用函數,也稱為隱式綁定。 3. 使用call()或調用函數apply(),也稱為顯式綁定。 4. 通過bind()方法綁定 基本函數調用 基本函數調用是調用函數的最簡單方法 例: <script type="text/javascript">
var name="張三";
function student(){
console.log(this.name);
}
student();
</script>
在這個例子中可以看出student()是從全局范圍內調用函數,因此這里的this指代的是全局范圍,所以輸出結果為“”張三“” 隱式綁定 當函數被一個對象“包含”的時候,我們稱函數的this被隱式綁定到這個對象里面了 <script type="text/javascript">
var student={
name:"張三",
obj:function(){
console.log(this.name)
}
}
student.obj();
</script>
obj函數雖然被放到對象里去但是并不會因為它被定義在對象的內部就會與外部產生區別,在隱式綁定下,obj通過this還是可以訪問到student對象中的a屬性 顯示綁定 可以使用call()或apply()方法調用函數,其執行上下文顯式綁定到對象,call和apply可以改變this指向 例:未使用call ()或者apply()時 <script type="text/javascript">
var name="張三";
var obj = {
name:"李四",
fun:function(){
console.log(this.name);}}
obj.fun();
</script>
利用call()使this指向window <script type="text/javascript">
var name="張三";
var obj = {
name:"李四",
fun:function(){
onsole.log(this.name);}}
obj.fun.call(window);
</script>
bind()綁定 bind()會創建一個函數,函數體內的this對象的值會被綁定到傳入bind()第一個參數的值,但是bind不執行函數,只返回一個可供執行的函數 <script type="text/javascript">
var a = {
b : function(){
var func = function(){
console.log(this.c);
}
func.bind(this)();
},
c : 'Hello!'
}
a.b();
</script>通過bind方法將this指向c對象中的內容。
總結:以上就是本篇文章的全部內容了,從上面的文章中我們可以看出,誰調用的this就指向誰;全局中this指向window;而且call(),apply()以及bind()方法可以改變this的指向。 以上就是在JavaScript函數中this指向的是什么的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!