javascript-面向对象

1、工厂模式

function createObj(name,age){
	var obj = new Object();
	obj.name = name;
	obj.age = age;
	obj.run = function(){
		return this.name + this.age
	}
	return obj;
}
var box1 = createObj("Yang",24);
alert(box1.run());				// Yang24

2、构造函数(推荐)

function CreateObj(name,age){
	this.name = name;
	this.age = age;
	this.run = function(){
		return this.name + this.age;
	}
}

var box1 = new CreateObj("Yang",24);
alert(box1.run());                            // Yang24


3、字面量形式

function box(){};
box.prototype = {
        constructor : box,       //强行指向对象
	name : "Yang",
	age : 24,
	run : function(){
		return this.name + this.age
	}
}

var box1 = new box();
alert(box1.run());

继承:

1、原型链继承

function Box(){								// 父类
	this.name = "Yang";
}

function Desk(){							// 子类
	this.age = 24;
}

Desk.prototype = new Box();					// 父类实例化赋值给子类继承


var Desk = new Desk();
alert(Desk.name);

2、对象冒充继承

function Box(name,age){
this.name = name;
this.age = age;
}
Box.prototype = function(){
this.family = [1,2,3];
}
function Des(name,age){
Box.call(this,name,age);//对象冒充继承
}


var Desk = new Desk("Yang",24);
alert(Desk.name);// Yang
alert(Desk.age);// age        Box的属性赋值就继承过来了
alert(Desk.family);// undefined  对象冒充继承,只能继承对象实例里面的方法和属性,// 如果要实例化属性和原型一起继承,需要配合第一种方法一起使用 </span>
解决办法:
在调用之前加上:Desk.prototype = new Box();			// 父类实例化赋值给子类继承</span>

 
 
 
</pre><pre name="code" class="javascript">
 


PS:删除对象属性和方法(删除原型属性也一样可以)

delete Desk.name;







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值