面向对象,函数构造方法

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>面向对象,函数构造方法1</title>
	</head>

	<body>
	</body>
	<script>
	/*(function(){}());将变量方法等搞成不同作用域,即封装某些代码块,后加()是为了可以执行*/
	(function(){
		var n="局部作用域的变量n";
		function people(name,age,sex){//people类的构造函数
			this.name=name;
			this.age=age;
			this.sex=sex;
		}
		people.prototype.n=n;
		people.prototype.say=function(){
			alert("people----say");
		}
		window.people=people;//赋值给window,全局才可以调用
		
	}());
	
	
	(function(){
		function stu(name,age,sex){//stu类的构造函数
			this.name=name;
			this.age=age;
			this.sex=sex;
		}
		stu.prototype=new people();//继承people类
		
		var speple_say=stu.prototype.say;
		people.prototype.say=function(){
			speple_say.call(this);//子类调用父类的say()
			alert("stu----say");//重写父类say()
		}
		window.stu=stu;//赋值给window,全局才可以调用
	}());
	
	
	
	var p=new people('小明','12','男');
	p.say();
	alert(p.name+"  "+p.n);
	
	
	
	var s=new stu();
	s.say();
	alert(s.n);
	</script>

</html>

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>面向对象,函数构造方法2</title>
	</head>

	<body>
	</body>
	<script>
	/*(function(){}());将变量方法等搞成不同作用域,后加()是为了可以执行*/
	(function(){
		var n="局部变量n";
		function people(name){
			var _this={};//声明_this变量是一个空对象
			_this.name=name;
			_this.say=function(){
				alert("people----say---"+_this.name);
			}
			return _this;//个人觉得people更像是一个方法而不是类
		}
		window.people=people;
	}());
	
	
	function stu(name){
		var _this=people(name);
		var supersay=_this.say;
		_this.say=function(){
			supersay.call(_this);
			alert("stu----say---"+_this.name);
		}
		return _this;
	}
	
	var s=stu('jick');
	s.say();
	
	
	</script>

</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值