奮斗。!

          奮斗~

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            0 隨筆 :: 2 文章 :: 0 評論 :: 0 Trackbacks
          一般我們在使用javascript中的類的時候,都是通過new來實例化這個類得到一個對象。

          使用new這個關鍵字,會改變函數上下文環境,并且改變了return語句的行為。

          比如一個Person類如下:

          function Person() {
              this.name = "hello";
          }; 

          當我們new Person的時候,改變的函數執行的上下文,因此,這個類擁有了一個屬性name,值為hello。 同時new還會改變return 語句的行為,會返回這個Person實例。

          然而當我們直接調用Person()方法的時候,由于沒有使用new關鍵字,因此函數執行的上下文沒有改變,依然是window。

          因此window多了一個屬性name,值為hello。

          測試代碼如下:

           1 var Person = function(name) {
           2     this.name = name;
           3 };
           4 
           5 var format = new Person('format');
           6 
           7 console.log(format instanceof Person);
           8 
           9 console.log("window property -> name:" + this.name);
          10 
          11 Person('format');
          12 
          13 console.log("window property -> name:" + this.name);

          結果如下:



          理解了上面所說的原理之后,開始構建javascript"類"庫。

          var Class = function() {
              var klass = function() {
                  this.init(arguments);
              };
              klass.prototype.init = function() {};
              return klass;
          };

          var Person = new Class;

          Person.prototype.init = function() {
              //類似構造方法。可以在這里做一些初始化操作。
          }

          //由于Class返回的依舊是一個函數,也就是類。因此我們可以實例化這個類。 得到實例對象
          var person = new Person;

          ....

          有了這個類庫之后, 當我們需要自己的類的時候,只需要new Class即可。 然后根據需求寫自己的初始化代碼。

          posted on 2012-07-16 23:15 丶format丨 閱讀(90) 評論(0)  編輯  收藏 所屬分類: javascript提高

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 东辽县| 冀州市| 石家庄市| 郓城县| 崇礼县| 新余市| 南投市| 泗洪县| 佛山市| 石棉县| 秦安县| 罗甸县| 东城区| 博客| 克什克腾旗| 昔阳县| 吉林市| 蒙阴县| 张家港市| 黄浦区| 北辰区| 泾川县| 自治县| 奉节县| 嘉兴市| 平顺县| 兴义市| 土默特右旗| 浦东新区| 贺兰县| 宜春市| 邢台县| 永修县| 玉溪市| 杭锦旗| 肥东县| 偃师市| 那曲县| 乌苏市| 左权县| 中西区|