“對象是具體的,類是抽象的竖螃!其他編程語言這塊分的還是挺清楚的记舆,在Javascript中類和對象有時是傻傻分不清楚。小白你看看這段代碼可以執(zhí)行么凳鬓?”
小白看完以后說道:“你這是定義了一個男人對象茁肠,然后給對象賦值后輸出對象的名字和電話吧!應該可以執(zhí)行缩举!”
老朱:“錯了垦梆,這個是執(zhí)行不了的匹颤,你有沒有注意到Man里面name變量前面加了this,如果定義變量的時候前面加了this托猩,就說明這個變量是Man的公共變量印蓖,注意不是全局變量,公共變量是指通過Man的實例可以進行讀寫的變量京腥。function內(nèi)部定義的時候如果定義變量或者函數(shù)前面加了this赦肃,基本可以確定這是一個類,類是不能直接使用的绞旅,我們需要實例化(new)一下摆尝。”
“你可以這樣理解因悲,上面定義的是一個男人類堕汞,下面通過new實例化了一個對象xiaobai(小白是一個新的男人對象),實例化的對象就可以使用Man里面前面帶this的屬性和方法了晃琳⊙都欤”
小白接著問:“我看到sex定義的時候前面用了var,這說明它是一個局部變量卫旱,它的作用是什么呢人灼?”
老朱說道:“小白,你觀察的很仔細顾翼。你可以思考一個事情投放,如果一個人屬于男人類,他的性別肯定是男适贸,我們肯定不允許改變他的性別屬性灸芳。”
小白說:“可是有時候我可能還需要使用到性別信息拜姿,怎樣才能讓xiaobai這個實例既可以拿到性別信息又不能更改呢烙样?”
老朱說:“這個好辦啊,在Man里面再寫一個方法就可以了蕊肥≮嘶瘢”
“這樣不就實現(xiàn)既不能修改sex屬性又能獲取他了么?在類中定義變量前面加var 更專業(yè)的叫法是‘私有變量’壁却,私有變量之針對對象內(nèi)部使用批狱,通過對象實例無法直接接觸到它,需要通過其他方法才能拿到儒洛。另外類中的方法有兩種定義私有方法的方式精耐,這樣它就只能被這個類的實例內(nèi)部使用,外部無法接觸琅锻∝酝#”
老朱繼續(xù)說道:“如果你直接使用xiaobai這個實例調(diào)用checktel或者checkname方法程序就會報錯向胡。”
小白看完以后感慨道:“原理我明白了惊完,可以想不通怎么去使用它僵芹,我想我還得多看看這方面的資料,朱哥您先忙著小槐,我去練習了拇派。”
想學H5的朋友可以關(guān)注老爐凿跳,您的關(guān)注是我持續(xù)更新《小白HTML5成長之路》的動力件豌!