最近在学习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
...
};
});