js 对象的封装和继承

// 九、对象的封装
	// *(如果是构造函数,第一个字母大写,不是规定)*// 
	// 1、工厂函数(创造对象,但是属性是后期自己加)
		// function person(name,age,fun){
		// 	var obj = {};
		// 	obj.name1 = name;
		// 	obj.age1= age ;
		// 	obj.say1 = fun;
		// 	return obj;
		// }		
		// var zs = person("zhangsan",18,say);
		//注意工厂函数这里不用new,因为工厂函数直接返回一个对象,就不需要再实例化一个对象了。
		// function say(){
		// 	alert("说话");
		// }
		// alert(zs.say1);
		// alert(zs.say1());


		// 2.构造函数封装
		// 这两个都不建议使用,浪费内存

		// 3.prototype原型,原型也是一个对象
		// 原型对象放代码块,公用的,静态区放的是全局的东西
		// 问题:没有个性化的东西。第4种最常用
		// function person(){
			
		// }
		// person.prototype.say=function(){
		// 	alert("shuohua")
		// }
		// var zs=new person();
		// var ls=new person();
		// zs.say();
		// ls.say();		
		// 4.混合模式
		// function person(name,age){
		// 	this.name=name;
		// 	this.age=age;
		// 	this.smile=function(){
		// 		alert("哈哈")
		// 	}
		
		// }
		// person.prototype.say=function(){
		// 	alert("shuohua");
		// }
		// var zs=new person("zs",12);
		// var ls=new person("ls",45);
		// console.log(zs.say);
		// console.log(ls);


		//十。 对象的特性 继承
		// 1)原型 原型也是一个对象 共有,不可改变有局限性,所以有了冒充,有了call
		// function person(){
		// 	this.say=function(){
		// 		alert("say")
		// 	}
		// }
		// function student(){
		// 	this.name="student";
		// }
		// student.prototype=new person();
		// var zs=new student();
		// console.log(zs.say);
		// 2)call() 对象冒充
		// 3)apply对象冒充,和call几乎一样,区别在于
		// 对象1.方法.apply(对象2,[参数1,参数2...])
		// 对象1.方法.call(对象2,参数1,参数2...)
		// function person(name){
		// 	this.name=name;
		// 	this.say=function(n,m){
		// 		alert([n,m]);
				//注意这里必须得是数组的形式。要不只能弹出一个 。
				 alert(this.name)
			// }
		// }
		// function student(name){
			// this.name=name;
		// }
		// var zs=new person("zhangsan")
		// zs.say(2)
		// var xzs=new student("xiaozhangsan")
		// zs.say.call(xzs,6,9)
		// zs.say.apply(xzs,[6,9])
		// console.log(xzs)
		// 11.object是所有对象的父类
		// var  obj=new Object()
		// console.log(obj)
		// 属性名
		// 1.constructor 获取该对象的构造函数
			// console.log(obj.constructor)
			// 2.prototype
			

			// 3.instanceof
			// console.log(obj instanceof Object)

			// 判断是否是该函数的原型链上的

		// 十二、继承的顺序
			// function person(){
			// 	this.say=function(){
			// 		alert("person上的方法")
			// 	}
			// }
			// student.prototype=new person();
			// function student(){
			// 	this.say=function(){
			// 		alert("student上的方法");
			// 	}
			// }
			// var stu=new student();
			// console.log(stu.say())




继承的几种方式:

es5 : 上面写的原型继承,call 继承,apply 继承

es6 :class 继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值