javascript 创建对象的几种方式

1.工厂模式

  

    function createPerson(name, age, gender) {

                  var p = {};
                  p.name = name;
                  p.age = age;
                  p.gender = gender;
           p.sayHello = function(){
          
             alert('hello'); 
          } return p; } var p1 = createPerson('jim', 19, '男'); var p2 = createPerson('lily', 12, '女');

  这种类型的函数就是用来创建对象的,即生产对象   成为工厂函数.

 

2.构造函数模式

  用来创建对象的一种函数,使用new关键字调用的函数

    
    function Person(name, age, gender) {

            this.name = name;
            this.age = age;
            this.gender = gender;

    }

    var p = new Person('jim', 18, '男' );

  注:  构造器中不需要 return 语句 

    调用构造器的时候, 使用 new 运算符引导

    在构造器中 this 表示当前对象. 给对象提供成员使用 this.xxx 的 方式

    构造器的名字, 一般使用 Pascal 命名规则( 首字母大写的 )

 

3.原型模式

  1.直接给原型对象添加成员

    
    function Cat(){

    }
    Cat.prototype.run=function(){
	console.log("在跑步");
    }
    var cc=new Cat();
    cc.run();

  

  2.直接替换原型对象( 注意: 手动的添加 constructor 属性, 表示对应的构造函数 ) 

  

    
    function Cat(){

    }
    Cat.prototype={
	sayHello:function(){
		console.log("打招呼");
		}
	}

    var cc=new Cat();
    cc.sayHello();

  

  两种方式的不同?

    1>直接在原型中添加成员的方式是使用的默认的原型对象,而默认的原型对象中有一个constructor的属性,该属性指向构造函数.

    2>直接替换原型对象的方式是替换一个全新的对象,对象中有有什么属性,原型中就有什么成员,如果没有写constructor属性,原型对象中就没有这个constructor属性,但是可以手动添加constructor属性

 

4.混合构造函数原型模式

5.动态原型方式

 

posted @ 2017-09-19 15:31  ATP1  阅读(136)  评论(0编辑  收藏  举报