定义类的方式

工厂模式

function ren(name,sex,age){
            var obj=new Object();
            obj._name=name;
            obj._sex=sex;
            obj._age=age;
            obj.fa=function(){
                alert(this._name);
            }
            return obj;
        }
        var p1=ren('wang1','男1',20);
        var p2=ren('wang2','男2',30);
        var p3=ren('wang3','男3',40);
        p1.fa();
        alert(p1._name+'\n'+p1._sex+'\n'+p1._age+'\n');

构造函数式

function Per(name,age,sex){
            this.name=name;
            this.age=age;
            this.sex=sex;
            this.fa=function(){
                alert(this.name);
            }
        }
        //开始构造一个函数,使用new关键字,传递参数,返回对象
        var p1=new Per('w1',20,'男');
       alert(p1.name);
       alert(p1.age);
        p1.fa();
        //构造器是否属于Per
        alert(p1.constructor==Per);
         alert(p1 instanceof Per);
         alert(p1 instanceof Object);

         //创造对象的方式
         //当作构造函数去使用
         var p2=new Per('w1',20,'男');
         //作为普通函数去执行
         Per('w2',22,'女'); //相当于window.Per('w2',22,'女'),在全局环境里定义属性并复制,直接定义在window上
         //在另一个对象的作用域中调用
        var o=new Object();
        Per.call(o,'w1111',20,'男');
        alert(o.name);

 

posted @ 2016-07-13 09:34  八bug哥哥  阅读(149)  评论(0编辑  收藏  举报