摘要:涵義實質使用場合使用注意點避免多層避免數組處理方法中的避免回調函數中的綁定的方法參考鏈接涵義就是屬性或方法當前所在的對象。上面代碼是一個文本輸入框,每當用戶輸入一個值,就會調用回調函數,驗證這個值是否在指定范圍。
涵義
實質
使用場合
使用注意點
避免多層 this
避免數組處理方法中的 this
避免回調函數中的 this
綁定 this 的方法
Function.prototype.call()
Function.prototype.apply()
Function.prototype.bind()
參考鏈接
1.涵義
this就是屬性或方法“當前”所在的對象。
只要函數被賦給另一個變量,this的指向就會變。
var A = {
name: "張三",
describe: function () {
return "姓名:"+ this.name;
}
};
var name = "李四";
var f = A.describe;
f() // "姓名:李四"
上面代碼中,A.describe被賦值給變量f,內部的this就會指向f運行時所在的對象(本例是頂層對象)。
再看一個網頁編程的例子。
上面代碼是一個文本輸入框,每當用戶輸入一個值,就會調用onChange回調函數,驗證這個值是否在指定范圍。瀏覽器會向回調函數傳入當前對象,因此this就代表傳入當前對象(即文本框),然后就可以從this.value上面讀到用戶的輸入值。
2.實質
JavaScript 語言之所以有 this 的設計,跟內存里面的數據結構有關系。
var obj = { foo: 5 };
上面的代碼將一個對象賦值給變量obj。JavaScript 引擎會先在內存里面,生成一個對象{ foo: 5 },然后把這個對象的內存地址賦值給變量obj。也就是說,變量obj是一個地址(reference)。后面如果要讀取obj.foo,引擎先從obj拿到內存地址,然后再從該地址讀出原始的對象,返回它的foo屬性。
2.1屬性結構保存
原始的對象以字典結構保存,每一個屬性名都對應一個屬性描述對象。舉例來說,上面例子的foo屬性,實際上是以下面的形式保存的。
{
foo: {
[[value]]: 5 [[writable]]: true [[enumerable]]: true [[configurable]]: true
}
}
注意,foo屬性的值保存在屬性描述對象的value屬性里面。
var obj = { foo: function () {} };
這時,引擎會將函數多帶帶保存在內存中,然后再將函數的地址賦值給foo屬性的value屬性。
{
foo: {
[[value]]: 函數的地址 ...
}
}
2.2函數的this
this,它的設計目的就是在函數體內部,指代函數當前的運行環境。
3.使用場合
(1)全局環境
只要是在全局環境下運行,this就是指頂層對象window
(2)構造函數
構造函數中的this,指的是實例對象
由于this指向實例對象,所以在構造函數內部定義this.p,就相當于定義實例對象有一個p屬性
(3)對象的方法
如果對象的方法里面包含this,this的指向就是方法運行時所在的對象。該方法賦值給另一個對象,就會改變this的指向
4.使用注意點
5.避免多層 this
6.避免數組處理方法中的 this
7.避免回調函數中的 this
8.綁定 this 的方法
Function.prototype.call()
Function.prototype.apply()
Function.prototype.bind()
9.參考鏈接
this.property
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105691.html
摘要:涵義實質使用場合使用注意點避免多層避免數組處理方法中的避免回調函數中的綁定的方法參考鏈接涵義就是屬性或方法當前所在的對象。上面代碼是一個文本輸入框,每當用戶輸入一個值,就會調用回調函數,驗證這個值是否在指定范圍。 涵義實質使用場合使用注意點避免多層 this避免數組處理方法中的 this避免回調函數中的 this綁定 this 的方法 Function.prototype.call...
摘要:涵義實質使用場合使用注意點避免多層避免數組處理方法中的避免回調函數中的綁定的方法參考鏈接涵義就是屬性或方法當前所在的對象。上面代碼是一個文本輸入框,每當用戶輸入一個值,就會調用回調函數,驗證這個值是否在指定范圍。 涵義實質使用場合使用注意點避免多層 this避免數組處理方法中的 this避免回調函數中的 this綁定 this 的方法 Function.prototype.call...
摘要:涵義實質使用場合使用注意點避免多層避免數組處理方法中的避免回調函數中的綁定的方法參考鏈接涵義就是屬性或方法當前所在的對象。上面代碼是一個文本輸入框,每當用戶輸入一個值,就會調用回調函數,驗證這個值是否在指定范圍。 涵義實質使用場合使用注意點避免多層 this避免數組處理方法中的 this避免回調函數中的 this綁定 this 的方法 Function.prototype.call...
摘要:前言是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。面對對象基本概述概述是基于面向過程的變成思想,是對面向過程的一種封裝。面對對象開發就是不斷的創建對象,使用對象,指揮對象做事情。面對對象設計其實就是在管理和維護對象之間的關系。 前言 java是面對對象的語言,因此有必要單獨紀錄下對象的各種定義和理解。 面對對象,主要包括:面向對象思想,類與對象及其使用,對象的內存圖,成...
閱讀 1630·2021-10-27 14:13
閱讀 1868·2021-10-11 10:59
閱讀 3367·2021-09-24 10:26
閱讀 1925·2019-08-30 12:48
閱讀 3041·2019-08-30 12:46
閱讀 2032·2019-08-30 11:16
閱讀 1414·2019-08-30 10:48
閱讀 2740·2019-08-29 16:54