<script type="text/javascript">
// 工厂模式
function createPerson(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.sayName = function(){
alert("factory:===>"+this.name);
}
return obj;
}
// 工厂模式测试
var p1 = createPerson("Jim",20);
var p2 = createPerson("Tom",30);
p1.sayName();
p2.sayName();
/**************************************************************/
// 构造函数模式
function Person(name,age){
this.name = name;
this.age = age;
this.sayAge = function(){
alert("Constructor:===> I am "+ this.age);
}
}
// 构造函数测试
var p3 = new Person("Mark",18);
p3.sayAge();
alert(p3 instanceof Person);
alert(p3 instanceof Object);
/**************************************************************/
//原型模式
function Dog(name,color){
}
Dog.prototype = { //原型默认值
name:"Wangwang",
age:10,
say:function(){
alert("Wang wang ");
}
};
var d1 = new Dog();
d1.say(); //"Wang wang " -->来自原型
var d2 = new Dog();
d2.say = function(){
alert("wa wa");
};
d2.say(); //"wa wa" -->来自实例
/**************************************************************/
/**
* 组合使用构造函数模式和原型模式
* @param {[type]} name [description]
* @param {[type]} type [description]
* @param {[type]} driver [description]
* 构造函数方式定义实例属性
* 原型方式用于定义方法和共享的属性。
*/
function Car(name,type,driver){
this.name = name;
this.type = type;
this.driver = ["Tom","Jim"];
}
Car.prototype = {
constructor : Car,
sayName:function(){
alert(this.name);
},
sayDriver:function(){
alert(this.driver);
}
}
var c1 = new Car();
c1.sayDriver(); //Tom,Jim
var c2 = new Car();
c2.driver = ["Jack","Mark"];
c2.sayDriver(); //Jack,Mark
</script>
// 工厂模式
function createPerson(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.sayName = function(){
alert("factory:===>"+this.name);
}
return obj;
}
// 工厂模式测试
var p1 = createPerson("Jim",20);
var p2 = createPerson("Tom",30);
p1.sayName();
p2.sayName();
/**************************************************************/
// 构造函数模式
function Person(name,age){
this.name = name;
this.age = age;
this.sayAge = function(){
alert("Constructor:===> I am "+ this.age);
}
}
// 构造函数测试
var p3 = new Person("Mark",18);
p3.sayAge();
alert(p3 instanceof Person);
alert(p3 instanceof Object);
/**************************************************************/
//原型模式
function Dog(name,color){
}
Dog.prototype = { //原型默认值
name:"Wangwang",
age:10,
say:function(){
alert("Wang wang ");
}
};
var d1 = new Dog();
d1.say(); //"Wang wang " -->来自原型
var d2 = new Dog();
d2.say = function(){
alert("wa wa");
};
d2.say(); //"wa wa" -->来自实例
/**************************************************************/
/**
* 组合使用构造函数模式和原型模式
* @param {[type]} name [description]
* @param {[type]} type [description]
* @param {[type]} driver [description]
* 构造函数方式定义实例属性
* 原型方式用于定义方法和共享的属性。
*/
function Car(name,type,driver){
this.name = name;
this.type = type;
this.driver = ["Tom","Jim"];
}
Car.prototype = {
constructor : Car,
sayName:function(){
alert(this.name);
},
sayDriver:function(){
alert(this.driver);
}
}
var c1 = new Car();
c1.sayDriver(); //Tom,Jim
var c2 = new Car();
c2.driver = ["Jack","Mark"];
c2.sayDriver(); //Jack,Mark
</script>