1. 程式人生 > >js面向對象學習1

js面向對象學習1

括號 fine todo con UNC .com inf 結果 分享圖片

我是菜鳥,老鳥勿看,繼承多態等太多概念難以理解,還是從實踐中慢慢學吧!爭取能大致看懂網上的開源的代碼。

--------------

對象的組成:方法和屬性

屬性關鍵詞:靜止的,狀態

方法關鍵詞:動態的,過程,處理,帶括號

--------------

js中的面向對象不是其他語言那樣的面向對象。

 1         <script type="text/javascript">
 2         //定義arr為一個數組(數組也是一個對象實例,所以arr是個對象實例)
 3         var my_arr=[];
 4         //以前變量這樣用,var number=10; 
5 //現在定義屬性,arr.number = 10; 就是用“點”即可! 6 my_arr.number = 10; 7 //定義對象的方法 8 my_arr.test = function(){ 9 console.log(this); 10 //這裏this就是這個數組,直接用數組名也可以 11 //alert(my_arr.number); 12 //alert(this.number); 13 } 14 //這樣使用方法
15 my_arr.test(); 16 </script> 17 18

技術分享圖片

結果是數組有個number屬性和test方法,但是數組內容為空,length為0,但是這樣alert(my_arr[‘number‘]);也可以彈出10

//TODO 以後再研究數組,但是可見,數組的內容是內容,屬性和內容不是一回事,內容是數組裏面存了啥,屬性是這個數組實例有什麽屬性。如同,一個是汽車裏裝了誰誰,一個是汽車有車大燈的感覺。

------------

新建一個純凈的對象實例

 1     <script type="text/javascript">
 2
var my_obj = new Object(); //新建一個對象實例my_obj,換成 var my_obj = {}; 也行,一個意思 3 my_obj.name = ‘張三‘; //加個屬性 4 my_obj.test = function(){ //加個方法 5 this.test2(); //對象的A方法中用到對象的B方法 6 } 7 my_obj.test2 = function(){ 8 console.log(this.name); 9 } 10 my_obj.test(); //使用 11 </script>

對象中思考變量作用域的問題

以前學到變量作用域,都是函數和變量,現在加入對象,看看是怎麽回事

1     <script type="text/javascript">
2         console.log(my_obj); // 顯示undefined,說明解析器中和其他類型一樣,根據var,先放個undefined再說
3         var my_obj = {};
4         console.log(my_obj); // 顯示 Object {}
5         my_obj.name = ‘張三‘;
6         console.log(my_obj); // 顯示Object {name:"張三"}
7     </script>

其實可以這樣理解,js解析器,預解析,根據var找到了my_obj,賦值undefined,如果放到不用對象的時候,出個name,需要var name一下,這裏由於對象var了,對象下各個目前未定義的屬性就相當於已經var但沒賦值了,一旦測試都是undefined。第4行,由於還沒有賦予name屬性,如果查看my_obj.name的話,就是undefined,而第5行賦值,第6行再看,就是“張三”了。

js面向對象學習1