看書的心得

2021-06-16 15:21:55 字數 2636 閱讀 1855

var myobject = (function() ,

getvalue:function()

} }());

// document.write(myobject.getvalue());

myobject.increment(3);

document.write(myobject.getvalue()); //3

要注意到,increment後是匿名函式。為什麼這樣能獲得value的值呢?閉包 !閉包能打破函式作用域(跟c語言中的塊級作用域類似)的限制,使得函式體內的變數能夠附加或載入給內部函式(就像內部函式已經定義過一樣,其值為該變數最終的值)。其實。要正確地理解第乙個匿名函式的**,其中,return後面的**,它是json格式的,也就是說該匿名函式會返回乙個物件。

函式內的變數和屬性的區別:函式內的變數是函式的定義環境,而屬性是函式自身能擁有的,在外頭能以.或[str]的方式使用。this的就是代表該函式/物件 或者 window  

值得一提的是:第乙個匿名函式,雖然在全域性裡執行,但是其value並沒有給全域性環境下新增了value屬性,value屬於匿名函式級作用域下變數

函式級的作用域指的是所有在函式內定義的引數、變數不能給外部的函式獲得,但這些變數能夠通過閉包,被該函式內任意位置的內部函式獲得。(而且在乙個函式中的任何位置定義的變數在該函式中的任何地方都可見) 

--------------------------------修改1

var myobject = (function() ,

getvalue:function()

} }());

alert(myobject.getvalue()); //undefined

為什麼彈出的是undefined ?而不是0 ?

變數myobject最終得到乙個物件,其有兩個方法,increment和getvalue ,並沒有value屬性 ,因此,在呼叫的時候,this是指向物件myobject的,所以,它得到乙個undefined ,因為它返回乙個它沒有的屬性,所以undefined.

------------------- 修改2,去掉var

var myobject = (function() ,

getvalue:function()

} }());

alert(myobject.getvalue()); //undefined

注意到,value是給window新增乙個屬性,但是,當物件的方法呼叫時,this指向該物件myobject,而物件myobject沒有value的屬性,因此,還是得到undefined

-------------修改3,新增var that=this

var myobject = (function() ,

getvalue:function()

} }());

alert(myobject.getvalue()); //undefined

匿名函式中,其上下文環境是window,必然this指向window,所以,that還是指向window,因此,還是得到undefined

----------修改4,具名函式

function aaa() ,

getvalue:function()

} };

var myobject =aaa();

document.write(myobject.getvalue()); //undefined

document.write(myobject.getvalue());     //undefined

具名函式,其中變數myobject得到乙個物件,該物件有2個方法,increment和getvalue ,並沒有value 屬性,因此,再次呼叫物件myobject裡的方法時,this還是指向該物件myobject,但是,獲取乙個不存在的屬性,還是輸出undefined

----------修改5

var myobject = (function() ,

getvalue:function()

} }());

document.write(myobject.getvalue()); //0

這樣,變數myobject最終獲得乙個物件,其擁有value屬性和increment、getvalue的兩個方法,其中,value還是獲取全域性物件的value,當物件myobject呼叫getvalue方法的時候,getvalue內的this指向物件myobject,這樣就獲取其自身的value的值 .

但是,value是全域性變數。  當increment方法呼叫時,改變的是其自身的value,全域性的value還是不變。

var myobject = (function() ,

getvalue:function()

} }());

myobject.increment(4);

document.write(myobject.getvalue()); //4

alert(value); //0

看書的摘要

1 懶惰是很奇怪的東西,它使你以為那是安逸,是休息,是福氣 但實際上它所給你的是無聊,是倦怠,是消沉 它剝奪你對前途的希望,割斷你和別人之間的友情,使你心胸日漸狹窄,對人生也越來越懷疑。2 三句話給心煩時的自己 第一句 算了吧 告訴自己,凡事努力但不可執著 第二句 不要緊 告訴自己,凡事努力了就無怨...

看書之我見

宋皇帝趙恆說過 富家不用買良田,書中自有千鍾粟 安居不用架高堂,書中自有 屋 出門莫恨無人隨,書中車馬多如簇 娶妻莫恨無良媒,書中自有顏如玉 男兒若遂平生志。六經勤向窗前讀。表示的意思是 讀書考取功名是當時人生的一條絕佳出路,考取功名後,才能得到財富和美女。可是書中真的有 屋嗎?真的有顏如玉嗎?我暫...

最近看書少了,以後要多看書

最近兩周的oracle學習都是圍繞csdn上oracle板塊中遇到的問題 看書少了,遇到不懂的知識,查詢書籍,查詢網路的次數多了 於是與電腦一起度過的時間,佔了大約9 24 眼睛也開始抱怨了,偶爾的脹痛 離螢幕越來越近了 大腿有時候也會很難受 總感覺鍵盤的變得硬了,敲起來不想以前那麼順手了,其實,是...