四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

JScript中的"this"關(guān)鍵字使用方式補(bǔ)充材料

在"JavaScript中this關(guān)鍵字使用方法詳解"一文中,我曾例舉了在JavaScript和JScript中的8種this關(guān)鍵字的方式。這不又發(fā)現(xiàn)還有兩種this關(guān)鍵字的使用方式當(dāng)時(shí)沒(méi)有說(shuō)到,現(xiàn)補(bǔ)充說(shuō)明一下。并且通過(guò)第一種this關(guān)鍵字使用的說(shuō)明,能讓我們更好的理解JavaScript作為Object-Based語(yǔ)言的本質(zhì)。

    一種是和JavaScript類中的定義有關(guān),我們知道當(dāng)我們定義如下類的時(shí)候:  


function JSClass()
{
}

JSClass.prototype.m_Properties = 100;

JSClass.prototype.ToString = function()
{
    alert(this.m_Properties);
}

    方法ToString中的this.m_Properties就是100,那么下面這種定義呢? 

function JSClass()
{
}

JSClass.m_Properties = -100;

JSClass.ToString()
{
    alert(this.m_Properties);
}

    這時(shí)ToString中的這個(gè)this.m_Properties是啥?是-100。一定嗎?這個(gè)不一定了,這得看我們?cè)趺凑{(diào)用這個(gè)ToString方法。 

JSClass.ToString();
var fun = JSClass.ToString();
fun();
    這時(shí)的運(yùn)行結(jié)果居然是:-100和undefined。真是郁悶哈,怎么才能運(yùn)行fun得到-100呢?需要這樣來(lái)為fun賦值:

var fun = function() { JSClass.ToString(); }
fun();
    呵呵,這樣就是-100了。好像挺廢話的,最終不還是調(diào)用的JSClass.ToString()嗎?這個(gè)我們后面再說(shuō),看看把這兩個(gè)JSClass合在一起是什么情況呢? 


function JSClass()
{
}

JSClass.m_Properties = -100;
JSClass.prototype.m_Properties = 100;

JSClass.ToString = function()
{
    alert(this.m_Properties);
}

JSClass.prototype.ToString = function()
{
    alert(this.m_Properties);
}

    這兩個(gè)ToString()方法,和里面的this關(guān)鍵字它們是什么關(guān)系呢?看下面的示例: 

var jsclass = new JSClass();
jsclass.ToString();
JSClass.ToString();
    結(jié)果為:100和-100。這里的jsclass實(shí)際上是JavaScript的語(yǔ)言機(jī)制,通過(guò)new關(guān)鍵字的說(shuō)明來(lái)創(chuàng)建的一個(gè)新的實(shí)例。而JSClass是什么呢?他們本就是對(duì)象實(shí)例,只是長(zhǎng)得像個(gè)函數(shù),也像一個(gè)類的說(shuō)明。對(duì)于this的問(wèn)題,第一個(gè)jsclass.ToString()方法里的this是指新創(chuàng)建實(shí)例,而JSClass.ToString()方法里的this是值得JSClass這個(gè)對(duì)象實(shí)例。

    理解了這兩個(gè)this所指代的東西的不同本質(zhì),也就能更好的明白,為什么JavaScript叫做Object-Based的語(yǔ)言,而更加清楚它和Object-Oriented語(yǔ)言的本質(zhì)區(qū)別。

    回頭再說(shuō)一下補(bǔ)充第二中this的使用方法,就是在使用eval方法的時(shí)候,這個(gè)時(shí)候的this是什么呢?看看:

alert(this === eval("this"));
    的結(jié)果是什么?是true!這是因?yàn)閑val內(nèi)代碼被執(zhí)行的作用域就是當(dāng)前頁(yè)面本身的說(shuō)。

JavaScript技術(shù)JScript中的"this"關(guān)鍵字使用方式補(bǔ)充材料,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 河西走廊纪录片观后感| 胡凯莉| 谢予望| 村暖花开| 那些花儿吉他谱原版| 女子露胸| 富贵不能淫翻译| 腾格尔演的喜剧电影| 今天上午拳王争霸赛直播| 河南省物业管理条例| 杨玉环秘史| 百字明咒标准读诵慢念| 那个不为人知的故事电影演员表| 猫鼠| 182tv福利视频| 家庭琐事电影| av毛片免费看| 妈妈的朋友电影网| 黑太阳731电影| 电影《19号海滩》在线播放国语版| 绿门背后| 红灯区1996| 超级小熊布迷全集免费观看| 黑帮大佬和我的第365天| 胎儿生长指标对照表| 抗击 电影| 08版包青天狸猫换太子| 光棍电影| 郭云飞| 倪敏然| 上锁的房间演员表| 难忘的运动会作文| 恶魔女忍者| 中国未来会黑人化吗| 禁忌的游戏| 日本女人裸体照| 地铁女孩| 李泽峰| 奶酪鼠的穷途梦2| 焊缝外观质量检验标准 | 《保姆妈妈》电视剧|