欢迎来到福编程网,本站提供各种互联网专业知识!

JavaScript面向对象编程

发布时间:2008-03-02 作者: 来源:转载
暂时放弃js框架吧开始写javascript的时候都是自己写,后来发现了prototype.js框架,发现很好用,就一直用的,他的对象创建方法被修改了,但很好用,再后来又转用jquery框架,受此框架影响,也不用自己创建类了,渐渐的竟然忘记了如何自己定义类了,猛的给一个
//类的定义

//方法一:类的一般定义方法
functionplayer1(_name)
{
this.name=_name;
this.say=function(){alert(this.name);};
}

varp1=newplayer1('llinzzi1');
p1.say();


//方法二:prototype定义方法
varplayer2=function(){}
player2.prototype={
name:'',
say:function(){
alert(this.name);
}
}

varp2=newplayer2();
p2.name='llinzzi2';
p2.say();


//方法三:上面的方法结构美观,便捷,但构建函数不能带参数,修改方法
varplayer3=function(){
this.init.apply(this,arguments);
}
player3.prototype={
init:function(_name){
this.name=_name;
},
say:function(){
alert(this.name);
}
}

varp3=newplayer3('llinzzi3');
p3.say();

//类的继承

//方法一
varplayer4=function(){
this.init.apply(this,arguments);
}
player4.prototype=newplayer3;
player4.prototype.shout=function(){
alert(this.name.toUpperCase());
}

varp4=newplayer4('llinzzi4');
p4.shout();


//方法二上面的方法不能采用{}的方法,修改方法
Object.extend=function(destination,source){
for(varpropertyinsource)
destination[property]=source[property];
returndestination;
};

varplayer5=function(){
this.init.apply(this,arguments);
}
Object.extend(Object.extend(player5.prototype,player3.prototype),{
shout:function(){
alert(this.name.toUpperCase());
}

});

varp5=newplayer5('llinzzi5');
p5.shout();


//再从prototype.js抄一端浏览器判断代码

Browser={
IE:!!(window.attachEvent&&!window.opera),
Opera:!!window.opera,
WebKit:navigator.userAgent.indexOf('AppleWebKit/')>-1,
Gecko:navigator.userAgent.indexOf('Gecko')>-1&&navigator.userAgent.indexOf('KHTML')==-1,
MobileSafari:!!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
}

alert(Browser.MobileSafari);

相关推荐