js基础工厂模式创建对象

//使用工厂模式创建对象,构造函数都是object,不能区分多种不同的对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>工厂模式创建对象
		</title>
	</head>
	<body>
		<script type="text/javascript">
		//使用工厂模式创建对象,构造函数都是object,不能区分多种不同的对象
			function createPerson(name,age,gender){
				//创建一个新的对象
				var obj =new Object();
				//向对象中添加属性
				obj.name = name;
				obj.age = age;
				obj.gender = gender;
				obj.sayName = function(){
					alert(this.name);
				};
				return obj;			
			}
			var obj2 = createPerson("猪八戒",99,"男");
			var obj3 = createPerson("孙悟空",8,"女");
			var obj4 = createPerson("候子",90,"男");
			console.log(obj2);
			console.log(obj3);
			console.log(obj4);
			
			
		//构造函数,
		/*构造函数和普通函数不同就是调用方式不同
		普通函数是直接调用 ,构造函数使用new关键字调用
		新建的对象设置成函数的this,构造函数中使用this引用新建的对象
		创建的方法也叫类
		调用的per,per1,per2也叫实例,类的实例化
		*/
	   function Person(name,age,gender){
		   this.name = name;
		   this.age = age;
		   this.gender = gender;
		   }
		var per = new Person('张三',20,'男');
		var per1 = new Person('李四',21,'女');
		var per2 = new Person('王五',22,'男');
		console.log(per);
		console.log(per1);
		console.log(per2);
		console.log(per instanceof Person);//使用instanceof可以检查一个对象是否是一个类的实例(对象 instanceof 构造函数)
		
		
		
		//原型
		// 每个函数都有默认的prototype属性,这个函数对应着一个对象,这个对象就是我们所谓的原型对象
		// 当构造函数调用prototype时,创建的对象都有一个隐含属性,使用__proto__访问
		function Myclass(){
			sayHello = '十四';
			
		}
		var mc = new Myclass();
		// console.log(Myclass.prototype);
		// console.log(mc.__proto__==Myclass.prototype);
		mc.a = '我是mc中的a';
		
		
		
		
		function Mybatic(){
			
		}
		Mybatic.prototype.name = '我是原型的名字';
		var mc = new Mybatic();
		console.log(mc.name);//打印新添加的属性
		//使用in检查对象中是否含有某个属性,如果对象中没有但是原型有,也会返回true
		// console.log('name' in mc);	 
		
		// 使用hasOwnProperty检查对象中是否含有该属性,使用该方法只有当对象有这个属性才会返回true
		console.log(mc.hasOwnProperty('age'));
				
				</script>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值