JS面向对象

来源:互联网 发布:ad10电路设计软件 编辑:程序博客网 时间:2024/06/05 07:01

工厂模式和构造函数

工厂模式

function createObject(name,age){

var obj = new Object()            //创建对象

obj.name = name ;                //添加属性

obj.age = age;

obj.run = function(){                  //添加方法

   return this.name+this.age+"运行中"

}

   return obj;                      //返回对象引用

}

var bo1 = createObject("Lee",100)            //创建对象

var bo2 = createObject("Jack",200)、

alert(box1.run());

alert(box2.run());

 

//构造函数

function Box(name,age){     //创建对象,所有构造函数的对象就是Object

this.name = name;               //添加属性

this.age = age ; 

this.run = function(){          //添加方法

  return this.name+this.age+"运行中"

};

}

//1.构造函数没有new Object 但后台会自动 var obj = new Object

//2.this就相当于obj

//3.构造函数不需要返回对象引用,后台自动返回的

 

//1.构造函数也是函数,但函数名第一个字母大写

//2.必须new构造函数名(), new Box(),而这个Box第一个字母也是大写

//3.必须使用new运算符

 

var box1 = new Box("Lee",100);     //实例化

var box2 = new Box("Jack",200);

//构造函数

function Box(name,age)

  this.name = name;                   //实例属性

  this.age =  age; 

  this.run = function(){               //实例方法

   return this.name+this.age+"运行中"

}

//原型     (共享)

  function Box(){}     构造函数函数体内什么都没有 这里如果有 叫做实例属性 实例方法

Box.prototype.name = "Lee";

Box.prototype.age = 100;

Box.prototype.run = function(){

 return this.name+this.age+“运行中”

}

var box1 = new Box();

var box2  = new Box();

alert(box1.run())

//如果是实例方法,不同的实例化,他们的方法地址是不一样的,是唯一的

//如果是原型方法,他们的地址是共享的,大家都是一样的

alert(box1.run == box2.run);


原创粉丝点击