国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Javascript this 的一些學(xué)習(xí)總結(jié)

2024-05-06 14:21:29
字體:
供稿:網(wǎng)友
1.1.1 摘要
相信有C++、C#或Java等編程經(jīng)驗的各位,對于this關(guān)鍵字再熟悉不過了。由于Javascript是一種面向?qū)ο蟮木幊陶Z言,它和C++、C#或Java一樣都包含this關(guān)鍵字,接下來我們將向大家介紹Javascript中的this關(guān)鍵字。
本文目錄
全局代碼中的this
函數(shù)中的this
引用類型
函數(shù)調(diào)用以及非引用類型
引用類型以及this的null值
函數(shù)作為構(gòu)造器被調(diào)用時this的值
手動設(shè)置函數(shù)調(diào)用時this的值

1.1.2 正文

由于許多面向?qū)ο蟮木幊陶Z言都包含this關(guān)鍵字,我們會很自然地把this和面向?qū)ο蟮木幊谭绞铰?lián)系在一起,this通常指向利用構(gòu)造器新創(chuàng)建出來的對象。而在ECMAScript中,this不僅僅只用來表示創(chuàng)建出來的對象,也是執(zhí)行上下文的一個屬性:
代碼如下:
activeExecutionContext = {
// Variable object.
VO: {...},
this: thisValue
};

全局代碼中的this
代碼如下:
// Global scope
// The implicit property of
// the global object
foo1 = "abc";
alert(foo1); // abc
// The explicit property of
// the global object
this.foo2 = "def";
alert(foo2); // def
// The implicit property of
// the global object
var foo3 = "ijk";
alert(foo3); // ijk

前面我們通過顯式和隱式定義了全局屬性foo1、foo2和foo3,由于this在全局上下文中,所以它的值是全局對象本身(在瀏覽器中是window object);接下來我們將介紹函數(shù)中的this。
函數(shù)中的this
當this在函數(shù)代碼中,情況就復(fù)雜多了,并且會引發(fā)很多的問題。
函數(shù)代碼中this值的第一個特性(同時也是最主要的特性)就是:它并非靜態(tài)的綁定在函數(shù)上。
正如此前提到的,this的值是在進入執(zhí)行上下文(Excution context)的階段確定的,并且在函數(shù)代碼中的話,其值每次都不盡相同。
然而,一旦進入執(zhí)行代碼階段,其值就不能改變了。如果要想給this賦一個新的值是不可能的,因為在那時this根本就不是變量了。
接下來,我們通過具體的例子說明函數(shù)中的this。
首先我們定義兩個對象foo和person,foo包含一個屬性name,而person包含屬性name和方法say(),具體的定義如下:
代碼如下:
// Defines foo object.
var foo = {
name: "Foo"
};
// Defines person object.
var person = {
name: "JK_Rush",
say: function() {
alert(this === person);
alert("My name is " + this.name);
}
};
person.say(); // My name is JK_Rush
// foo and person object refer to
// the same function say
foo.say = person.say;
foo.say(); // My name is Foo.

通過上面的代碼,我們發(fā)現(xiàn)調(diào)用person的say()方法時,this指向person對象,當通過賦值方式使得foo的say()方法指向peson中的say()方法時。我們調(diào)用foo的say()方法,發(fā)現(xiàn)this不是指向person對象,而不是指向foo對象,這究竟是什么原因呢?
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 洛南县| 天镇县| 台南县| 台中市| 绵竹市| 大洼县| 衡东县| 资兴市| 武城县| 田阳县| 德钦县| 姚安县| 黄大仙区| 涟水县| 大洼县| 彭阳县| 镇原县| 金阳县| 翁源县| 开原市| 濮阳市| 海淀区| 民权县| 玛曲县| 沙雅县| 阿勒泰市| 阜康市| 平罗县| 牟定县| 武胜县| 兰州市| 沁阳市| 博湖县| 太湖县| 长子县| 全椒县| 全椒县| 万全县| 江都市| 凤台县| 嘉兴市|