面向对象编程:OOP

面向对象编程:OOP

面向对象编程:OOP
				class1. JavaScript没有classES5)
				JavaScript的面向对象是一种非正统的怪异的面向对象
			2. 使用Function来模拟对象
			3.对象:
				一切皆对象
				对象包含:属性   方法

				属性:特性                      变量
				方法:功能                      函数

			4.JavaScript内置对象
				Date    Array    Function    RegExp   Object
			5.自定义对象
				Object

举例:

var book=new Object();//创建一个对象实例
	//添加属性
	book.name='JavaScript入门';
	book.page=300;
	//添加方法
	book.read=function () {
		console.log('阅读');
	};

	//访问对象的属性
	document.write(book.name,book.page);
	//方法
	book.read();

创建一个学生对象 学号、姓名、年级、年龄
学习,跑步
代码如下:

var stu=new Object();//创建学生对象
		//添加属性
		stu.id=1000;
		stu.name='Jack';
		stu.grade='二年级';
		stu.age=22;
		//添加方法
		stu.study=function () {
			// console.log(stu.name+'学习');	
			console.log(this.name+' 学习');
		};
		stu.run=function(){
			console.log(this.name+' 跑步ing....');
		};



		//访问属性和方法
		console.log(stu.id,stu.name,stu.age,stu.grade);
		stu.study();
		stu.run();

录入班级学生(姓名、年龄、学号),当遇到exit时结束录入,输出所有学生的学号、姓名和年龄


	 var arr=getData();//录入数据
     showData(arr);//输出数据

		//录入数据
		function getData() {
			var arr=[];//数组
			while(true){
				var res=prompt('结束录入,请输入exit:');
				if(res=='exit'){
					break;
				}
				var stu=new Object();//创建对象
				stu.name=prompt('请输入姓名:');
				stu.age=prompt('请输入年龄:');
				stu.no=prompt('请输入学号:');
				//保存对象
				arr.push(stu);
			}
			return arr;
		}

		//输出数据
		function showData(arr){
			arr.forEach(function(item){
				console.log(item.no,item.name,item.age);
			});
		}
		

工厂模式创建对象

优点:方便,能够批量产生对象
缺点:为每一个新对象都追加了新方法,内存浪费


//创建 猫 对象
		function createCat(name,age,color) {
			var cat=new Object();
			cat.name=name;
			cat.age=age;
			cat.color=color;

			cat.catchMouse=function () {
				console.log(this.name+' 抓到一只大老鼠')	;
			};
			return cat;
		}

		//创建 猫 对象实例的过程
		var cat1=createCat('小花',2,'梅花色');

		console.log(cat1.name,cat1.age,cat1.color);
		cat1.catchMouse();

		var cat2=createCat('小黄',2,'黄色');
		console.log(cat2.name,cat2.age,cat2.color);
		cat2.catchMouse();

		console.log(cat1.catchMouse==cat2.catchMouse);//false
		

构造函数

	//模板
	//构造函数


		优点:能够批量创建对象  简洁
		缺点:依然为每一个新对象都生成新的方法,内存浪费
	
	
		当构造函数被new的时候,系统做了如下事情:
			1.创建一个object对象   new Object();
			2.将对应的属性和方法绑定到obj
			3.将该对象返回

function Person(name,age) {
			//添加属性
			this.name=name;
			this.age=age;
			//添加方法
			this.run=function(){
				console.log(this.name+' is runing,.....');
			};
			this.say=function(){
				console.log(this.name+' is speaking....');
			};
		}


		//根据构造函数创建对象实例
		var s=new Person('Lucy',21);
		console.log(s.name,s.age);
		s.run();
		s.say();


		var s1=new Person('Lily',22);
		console.log(s1.name,s1.age);
		s1.run();
		s1.say();
		

录入班级学生(姓名、年龄、学号),当遇到exit时结束录入,输出所有学生的学号、姓名和年龄
这个题用构造函数写一下:


       var arr=getData();//录入数据
		showData(arr);//输出数据

		//录入数据
		function getData() {
			var arr=[];//数组
			while(true){
				var res=prompt('结束录入,请输入exit:');
				if(res=='exit'){
					break;
				}
				var name=prompt('请输入姓名:');
				var age=prompt('请输入年龄:');
				var no=prompt('请输入学号:');
				var stu=new Student(no,name,age);//创建对象				
				//保存对象
				arr.push(stu);
			}
			return arr;
		}

		//输出数据
		function showData(arr){
			arr.forEach(function(item){
				console.log(item.no,item.name,item.age);
			});
		}


		//创建学生
		function Student(no,name,age){
			this.no=no;
			this.name=name;
			this.age=age;
		}
		
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值