Js构造函数创建Person类

1 /*
* 创建一个构造函数,专门用来创建Person对象的
* 构造函数就是一个普通的函数,创建方式和普通函数没有区别,
* 不同的是构造函数习惯上首字母大写
*
* 构造函数和普通函数的区别就是调用方式的不同
* 普通函数是直接调用,而构造函数需要使用new关键字来调用
*
* 构造函数的执行流程:
* 1.立刻创建一个新的对象
* 2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
* 3.逐行执行函数中的代码
* 4.将新建的对象作为返回值返回
*
* 使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类。
* 我们将通过一个构造函数创建的对象,称为是该类的实例
*
* this的情况:
* 1.当以函数的形式调用时,this是window
* 2.当以方法的形式调用时,谁调用方法this就是谁
* 3.当以构造函数的形式调用时,this就是新创建的那个对象
*
*/

<script type="text/javascript">
			function Person(name,age,gender){
				var name,age,gender;
				this.name=name;
				this.age=age;
				this.gender=gender;
			}
			
			function Animal(name,age,gender){
				var name,age,gender;
				this.name=name;
				this.age=age;
				this.gender=gender;
			}
			
			var P1=new Person("刘",20,"男");
			var P2=new Animal("哈士奇",5,"男");
			console.log(P1.name);
			console.log(P2.name);
			/*
			 * 使用instanceof可以检查一个对象是否是一个类的实例
			 * 	语法:
			 * 		对象 instanceof 构造函数
			 * 如果是,则返回true,否则返回false
			 */

			console.log( P2 instanceof Person);
		</script>

枚举

          function Person(name,age,gender){
				var name,age,gender;
				this.name=name;
				this.age=age;
				this.gender=gender;
			}
			var P1=new Person("刘",20,"男");
			
			for(var n in P1){
				console.log(n);
				console.log(P1[n]);
			}

结果:
在这里插入图片描述
1.实例

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
				function Person(name , age , gender){
				this.name = name;
				this.age = age;
			}
			
			//修改Person原型的toString
			Person.prototype.toString = function(){
				return "Person[name="+this.name+",age="+this.age+"]";
			};
			
			//创建一个Person对象
			var per = new Person("孙悟空",18);
			var per2 = new Person("猪八戒",28);
			var per3 = new Person("红孩儿",8);
			var per4 = new Person("蜘蛛精",16);
			var per5 = new Person("二郎神",38);
			
			/*
			 * 将这些person对象放入到一个数组中
			 */
			var perArr = [per,per2,per3,per4,per5];
			
			/*
			 * 创建一个函数,可以将perArr中的满18岁的Person提取出来,
			 * 	然后封装到一个新的数组中并返回
			 * arr
			 * 	形参,要提取信息的数组
			 */
			function getAdult(arr){
				//创建一个新的数组
				var newArr = [];
				
				//遍历arr,获取arr中Person对象
				for(var i=0 ; i<arr.length ; i++){
					var p = arr[i];
					//判断Person对象的age是否大于等于18
					if(p.age >= 18){
						//如果大于等于18,则将这个对象添加到newArr中
						//将对象放入到新数组中
						newArr.push(p);
					}
				}
				//将新的数组返回
				return newArr;
				
			}
			
			var result = getAdult(perArr); 
			
			console.log(result);

		</script>
	</head>
	<body>
	</body>
</html>

2.实例

<script type="text/javascript">
			
			/*
			 * 一般我们都是使用for循环去遍历数组,
			 * 	JS中还为我们提供了一个方法,用来遍历数组
			 * forEach()
			 * 		- 这个方法只支持IE8以上的浏览器
			 * 			IE8及以下的浏览器均不支持该方法,所以如果需要兼容IE8,则不要使用forEach
			 * 			还是使用for循环来遍历
			 */
			
			//创建一个数组
			var arr = ["孙悟空","猪八戒","沙和尚","唐僧","白骨精"];
			  
			/*
			 * forEach()方法需要一个函数作为参数
			 * 	- 像这种函数,由我们创建但是不由我们调用的,我们称为回调函数
			 * 	- 数组中有几个元素函数就会执行几次,每次执行时,浏览器会将遍历到的元素
			 * 		以实参的形式传递进来,我们可以来定义形参,来读取这些内容
			 * 	- 浏览器会在回调函数中传递三个参数:
			 * 		第一个参数,就是当前正在遍历的元素
			 * 		第二个参数,就是当前正在遍历的元素的索引
			 * 		第三个参数,就是正在遍历的数组
			 * 		
			 */
			arr.forEach(function(value , index , obj){
				console.log(index+":"+value+obj);
			});
			
			
		</script>

3.实例

<script type="text/javascript">
			
			var arr = ["孙悟空","猪八戒","沙和尚","唐僧","白骨精"];
			
			/*
			 * slice()  [)
			 * 	- 可以用来从数组提取指定元素
			 * 	- 该方法不会改变元素数组,而是将截取到的元素封装到一个新数组中返回
			 * 	- 参数:
			 * 		1.截取开始的位置的索引,包含开始索引[
			 * 		2.截取结束的位置的索引,不包含结束索引)
			 * 			- 第二个参数可以省略不写,此时会截取从开始索引往后的所有元素
			 * 		- 索引可以传递一个负值,如果传递一个负值,则从后往前计算
			 * 			-1 倒数第一个
			 * 			-2 倒数第二个
			 */
			
			var result = arr.slice(1,4);
			
			result = arr.slice(2);
			
			result = arr.slice(1,-2);//猪八戒","沙和尚
			
			console.log("看这里:"+result);
			
			/*
			 * splice()
			 * 	- 可以用于删除数组中的指定元素
			 * 	- 使用splice()会影响到原数组,会将指定元素从原数组中删除
			 * 		并将被删除的元素作为返回值返回
			 * 	- 参数:
			 * 		第一个,表示开始位置的索引
			 * 		第二个,表示删除的数量
			 * 		第三个及以后。。
			 * 			可以传递一些新的元素,这些元素将会自动插入到开始位置索引前边
			 * 	
			 */
			
			arr = ["0孙悟空","1猪八戒","2沙和尚","3唐僧","4白骨精"];
			//var result = arr.splice(1,2,"牛魔王","铁扇公主","红孩儿");//从下标为1的位置开始删除2个元素 并且在下标为1的位置添加三个"牛魔王","铁扇公主","红孩儿"元素
			//var result = arr.splice(1,2);作用是删除从下标为1的地方开始删2个元素
			
			console.log(arr);
			//console.log(result); 
			
			
		</script>

4.实例

<script type="text/javascript">
			
			//创建一个数组
			var arr = [1,2,3,2,2,1,3,4,2,5];		
			
			//去除数组中重复的数字
			//获取数组中的每一个元素
			for(var i=0 ; i<arr.length ; i++){
				//console.log(arr[i]);
				/*获取当前元素后的所有元素*/
				for(var j=i+1 ; j<arr.length ; j++){
					//console.log("---->"+arr[j]);
					//判断两个元素的值是否相等
					if(arr[i] == arr[j]){
						//如果相等则证明出现了重复的元素,则删除j对应的元素
						arr.splice(j,1);
						//当删除了当前j所在的元素以后,后边的元素会自动补位
						//此时将不会在比较这个元素吧,我需要在比较一次j所在位置的元素
						//使j自减
						j--;
					}
				}
			}
			
			console.log(arr);
			
			
		</script>
  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JavaScript中,构造函数是用来创建对象的特殊函数。通过使用构造函数,我们可以定义一个对象的属性和方法。构造函数可以使用new操作符来调用,并生成一个特殊型的对象。构造函数在面向对象的语言中很常见,如Java、C++、PHP等。 要创建一个构造函数,我们可以使用function关键字,并在函数体内定义对象的属性和方法。例如,下面是一个构造函数Person,它有name和age属性以及sayName方法: function Person(name, age) { this.name = name; this.age = age; this.sayName = function () { console.log(this.name); } } 通过使用new操作符来调用构造函数,我们可以创建一个新的对象,并将属性和方法添加到该对象上。例如,下面的代码创建一个名为person的对象,并调用其sayName方法来打印出名字:"Nicholas"。 let person = new Person("Nicholas", 29); person.sayName(); // 输出:"Nicholas" 需要注意的是,如果不使用new操作符调用构造函数,它就会被当作普通函数来调用,并将属性和方法添加到全局对象(在浏览器环境中通常是window对象)上。这可能会导致意外的结果。 例如,下面的代码在全局作用域中调用了Person函数,并将属性和方法添加到window对象上。然后,我们调用window对象上的sayName方法,输出结果为:"Greg"。 Person("Greg", 27); window.sayName(); // 输出:"Greg" 因此,在使用构造函数创建对象时,务必记得使用new操作符来调用构造函数,以确保正确地创建对象并将属性和方法添加到新创建的对象上。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值