jimingminlovefly

          統計

          最新評論

          js創建對象的方式

          JavaScript 創建類/對象的幾種方式

          在JS中,創建對象(Create Object)并不完全是我們時常說的創建類對象,JS中的對象強調的是一種復合類型,JS中創建對象及對對象的訪問是極其靈活的。

          JS對象是一種復合類型,它允許你通過變量名存儲和訪問,換一種思路,對象是一個無序的屬性集合,集合中的每一項都由名稱和值組成(聽起來是不是很像我們常聽說的HASH表、字典、健/值對?),而其中的值類型可能是內置類型(如number,string),也可能是對象。

          一、由一對大括號括起來

          復制代碼
              var emptyObj = {};
              
          var myObj =
              {
                  
          'id'1,        //屬性名用引號括起來,屬性間由逗號隔開
                  'name''myName'
              };
              
          //var m = new myObj(); //不支持
          復制代碼
           
            不知你注意到對象都是用 var 聲明的沒有,像上面的代碼,就只是簡單的聲明一個對象,它只有一份拷貝,你不能像實例化類對象一樣對它采用new操作,像上面代碼的注釋部分。這樣就極大的限制了對象的重用,除非你建立的對象只需要一份拷貝,否則考慮用其他方法建立對象。
            下面一起看看如何訪問對象的屬性和方法。
          復制代碼
              var myObj =
              {
                  
          'id'1,
                  
          'fun'function() {
                      document.writeln(
          this.id + '-' + this.name);//以"對象.屬性"方式訪問
                  },
                  
          'name''myObj',
                  
          'fun1'function() {
                      document.writeln(
          this['id'+ '+' + this['name']);//以集合方式訪問
                  }
              };
              myObj.fun();
              myObj.fun1();
              
          // 結果
              // 1-myObj 1+myObj 
          復制代碼
          二、用 function 關鍵字模擬 class
          在 function 中用 this 引用當前對象,通過對屬性的賦值來聲明屬性。如果用var聲明變量,則該變量為局部變量,只允許在類定義中調用。
          復制代碼
                  function myClass() {
                      
          this.id = 5;
                      
          this.name = 'myclass';
                      
          this.getName = function() {
                          
          return this.name;
                      }
                  }
                  
          var my = new myClass();
                  alert(my.id);
                  alert(my.getName());
                  
          // 結果
                  // 5
                  // myclass
          復制代碼
          三、在函數體中創建一個對象,聲明其屬性再返回
          在函數體中創建對象可利用第一點的方法,或先 new Object(); 再為各屬性賦值。
          不過用這種方式創建的對象在VS2008 SP1中是沒有智能提示的。
          復制代碼
                  function myClass() {
                      
          var obj =
                      {
                          
          'id':2,
                          
          'name':'myclass'
                      };
                      
          return obj;
                  }
                  
          function _myClass() {
                      
          var obj = new Object();
                      obj.id 
          = 1;
                      obj.name 
          = '_myclass';
                      
          return obj;
                  }
                  
          var my = new myClass();
                  
          var _my = new _myClass();
                  alert(my.id);
                  alert(my.name);
                  alert(_my.id);
                  alert(_my.name);

                  
          // 結果
                  // 2
                  // myclass
                  // 1
                  // _myclass
          復制代碼

          posted on 2014-05-09 14:57 計明敏 閱讀(335) 評論(0)  編輯  收藏 所屬分類: js

          主站蜘蛛池模板: 论坛| 曲阳县| 花莲县| 安远县| 孟村| 沐川县| 福清市| 东安县| 嘉黎县| 咸丰县| 通河县| 麻城市| 清原| 济南市| 寿光市| 东海县| 无锡市| 商河县| 东至县| 淄博市| 五河县| 敖汉旗| 静乐县| 疏勒县| 金昌市| 泉州市| 商都县| 平利县| 常德市| 汾阳市| 丰顺县| 依安县| 惠水县| 利辛县| 泸定县| 正镶白旗| 广安市| 阳泉市| 湛江市| 仪陇县| 鄂伦春自治旗|