JavaScript式的面向对象编程的几种方式

各种主流语言一般都讲究个面向对象,虽然不知道面向对象的各种好处是不是向介绍里面鼓吹的那样,但程序猿可能都习惯了。

所以一般程序猿们用过一段时间 JavaScript 后,就会感觉一片恶心,享受便利的同时又总是吐槽几名不爽。那让JavaScript面向对象是不是会爽点?

//最常见的
var obj={
   v:123,
   fn:function(){
   }
}
obj.fn(obj.v);

//有人也喜欢这样
var obj={};
obj.v=123;
obj.fn=function(){};
obj.fn(obj.v);

//上两种用的比较多,一般把这个对象当作页面上的一个全局变量使用。
//如果是相同特征的不同对象有就可以这样

function Preson(name,age){
    this.name=name;
    this.age=age;
}
var p1=new Preson('aaaaa',11);
var p2=new Preson('bbbbb',22);
alert(p1.name);
alert(p2 instanceof Preson);

//这种相对来说看到的比较少,其实也并不是用的少,因为使用prototype改进后代码看上去会舒服很多,很多人也就直接COPY了。
//这种写法就比较常见

function Preson(name,age){
    this._init(name,age);
}
Preson.prototype={
    name:"",
    age:0,
    _init:function(){
        this.name=name;
        this.age=age;
    },
    say:function(){
        alert(this.name);
    }
}
var p1=new Preson('aaaaa',11);
p1.say();

先就这样理解了,当然,使JS看起来面向对象的方法还有很多,不过大多是怪招邪招,长相怪异且没什么用,
建议和Java一样,需要new 后才能用的最好使用prototype方式,直接可以用的,只需要归类的var个大括号就行了