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