從prototype.js中學習到的js封裝

最近在學習prototype.js,發現這裏面的代碼適合像我這種初學者(使用過一些庫和框架,並用一些框架寫過一些項目的人)學習,下面從源碼截取一些面向對象封裝的代碼用於學習。app

一、給Object的原型添加extend方法,功能是對象的擴展,把一個對象的值賦值給源對象,若是源對象存在屬性,則修改,這種方法之前在jQuery中常常用到框架

Object.prototype.extend=function(object){
for(property in object){
this[property]=object[property];
}
//return this;
};函數

a.extend(b);學習

二、建立一個帶構造函數的類型,在當時看到這段代碼時,不是很好理解this

var Class = {
   create: function() {
              return function() {
                    this.initialize.apply(this, arguments);
             }
    }
};prototype

//調用rest

//首先經過new建立一個myClass,返回的是一個函數,對象

//給函數添加prototype方法initializeci

var myClass=Class.create();
myClass.prototype={
          initialize:function(){
               alert("IS Create ");
          }
};get

//new myClass時執行這行語句this.initialize.apply(this, arguments),調用initialize方法。

var b=new myClass();//彈出IS Creste

二、給String添加原型方法

Object.extend(String.prototype, (function() {

function empty() {
return this == '';
}

return {
empty:empty
};
})());

//能夠

'abc'.empty();

三、給Array添加原型方法

(function() {
   var arrayProto = Array.prototype;

   function size() {
        return this.length;
   }

   Object.extend(arrayProto, {
        size: size
   });

});

四、給Date添加原型方法

(function(proto) {

  function toISOString() {
      return this.getUTCFullYear() + '-' +
          (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
          this.getUTCDate().toPaddedString(2) + 'T' +
          this.getUTCHours().toPaddedString(2) + ':' +
          this.getUTCMinutes().toPaddedString(2) + ':' +
          this.getUTCSeconds().toPaddedString(2) + 'Z';
  }

  function toJSON() {
       return this.toISOString();
  }

  if (!proto.toISOString) proto.toISOString = toISOString;
  if (!proto.toJSON) proto.toJSON = toJSON;

}); 

五、建立一個新的類型

var Enumerable = (function() {

function each(){

 

}

funciton ...

return {
each: each

...
};

});

相關文章
相關標籤/搜索