Js OO方法小记

<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值