|
Javascript this關(guān)鍵字一般來說大家并不陌生,但是如何更好的用好Javascript this關(guān)鍵字卻需要我們仔細(xì)思考,希望本文對(duì)廣大程序員有所幫助。
摘要
本系列博文主要談一些在 Javascript 使用中經(jīng)常會(huì)混淆的高級(jí)應(yīng)用,包括: prototype, closure, scope, this關(guān)鍵字. 對(duì)于一個(gè)需要提高自己Javascript水平的程序員,這些都是必須要掌握的.
本節(jié)主要介紹this關(guān)鍵字和scope.
Contents
摘要引入this關(guān)鍵字關(guān)于apply和callscope詳述一些說明結(jié)論后記參考資料本文的源碼
引入
作為一個(gè)程序員, 你可能早已經(jīng)習(xí)慣于面向?qū)ο笳Z(yǔ)言中指代當(dāng)前對(duì)象的引用(或者指針), 如的c++中的this或者 Python 中的self,當(dāng)然具有OO屬性( Javascript 其實(shí)更多的是一種所謂的函數(shù)式語(yǔ)言)的 Javascript 同樣, 它也具有引用當(dāng)前屬性的對(duì)象的指針(或者引用), 也就是this關(guān)鍵字.
為了理解this關(guān)鍵字,如果你只想記住一句話,那應(yīng)該是 this關(guān)鍵字總是指向當(dāng)前函數(shù)的所有者對(duì)象(執(zhí)行空間), 至于這句話如何理解, 可以參見下面的詳細(xì)說明.
那么什么是 scope 呢?
wikipedia 中的解釋是 In computer programming, scope is an enclosing context where values and expressions are associated. 中文即是所謂的 作用域, 它指明的是一個(gè)數(shù)值或者表達(dá)式所關(guān)聯(lián)的上下文(能夠被引用的執(zhí)行空間).
scope 與this有什么關(guān)系呢? 如果從上面的定義來看, this指向的總是當(dāng)前引用此函數(shù)的對(duì)象,而當(dāng)你要判斷當(dāng)前引用的對(duì)象時(shí), 這時(shí)你就得弄清楚當(dāng)前函數(shù)所在的 scope. 具體可見下面的分析.
Javascript this關(guān)鍵字
請(qǐng)看下面的幾個(gè)例子.
一個(gè) Python 的例子:
class Person(object):
"""a person class
"""
def __init__(self, name):
self.name = name #這里的self指向的是實(shí)例化后的對(duì)象,如下面中的zhutao
def get_name(self):
return self.name
zhutao = Person("zhutao")
print zhutao.name
it知識(shí)庫(kù):javascript必知必會(huì)之this關(guān)鍵字及scope,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。