码迷,mamicode.com
首页 > Web开发 > 详细

从prototype.js中学习到的js封装

时间:2015-12-13 20:25:08      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

最近在学习prototype.js,发现这里面的代码适合像我这种初学者(使用过一些库和框架,并用一些框架写过一些项目的人)学习,下面从源码截取一些面向对象封装的代码用于学习。

1、给Object的原型添加extend方法,功能是对象的扩展,把一个对象的值赋值给源对象,如果源对象存在属性,则修改,这种方法以前在jQuery中经常用到

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

a.extend(b);

2、创建一个带构造函数的类型,在当时看到这段代码时,不是很好理解

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

//调用

//首先通过new创建一个myClass,返回的是一个函数,

//给函数添加prototype方法initialize

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

//new myClass时执行这行语句this.initialize.apply(this, arguments),调用initialize方法。

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

2、给String添加原型方法

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

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

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

//可以

‘abc‘.empty();

3、给Array添加原型方法

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

   function size() {
        return this.length;
   }

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

});

4、给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;

}); 

5、创建一个新的类型

var Enumerable = (function() {

function each(){

 

}

funciton ...

return {
each: each

...
};

});

 

从prototype.js中学习到的js封装

标签:

原文地址:http://www.cnblogs.com/arno-zhang/p/5027726.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!