继承程序员的优良传统---懒

  • 1.废话不多,上代码
  • 2.工厂模式:上代码
  • 2.1首先,我们来“造人 creatPerson()”
  • 2.2"啪"的一下,很快啊,造完了,造个其他的物种咋样,creatDog()造狗
  • 3.工厂模式:缺点
  • ==使用工厂方法创建的对象,使用的构造函数都是Object所以创建的对象都是Object这个类型,就导致我们无法区分出多种不同类型的对象==


1.废话不多,上代码

var obj = {
				name:"林徽因",
				age:19,
				sayname:function(){
					console.log(this.name);
			};
			var obj2 = {
				name:"林青霞",
				age:18,
				sayname:function(){
					console.log(this.name);
			};
			var obj3 = {
				name:"马钰",
				age:20,
				sayname:function(){
					console.log(this.name);

上面这样写特别麻烦
用工厂模式就相对简单点,

2.工厂模式:上代码

注意观察,下面造的两个物种都有一个非常关键的代码

var obj = new Object();

2.1首先,我们来“造人 creatPerson()”

function creatPerson(name, age){
				function creatPerson(name, age){
				var obj = new Object();
				obj.name = name;
				obj.age = age;
				obj.sayname = function(){
					alert(this.name);
				};
				return obj;
			}
			var jb1 = creatPerson("林青霞",18);
			console.log(jb1);
			jb1.sayname();
			//造狗呢?来,上代码!
			function creatDog(name, age){
				var obj = new Object();
				obj.name = name;
				obj.age = age;
				obj.sayname = function(){
					alert("呱呱~~~~");
				};
				return obj;
			}
			var jb2 = creatDog("大黄",45);
			console.log(jb2);
			jb2.sayname();
				obj.name = name;
				obj.age = age;
				obj.sayname = function(){
					alert(this.name);
				};
				return obj;
			}
			var jb1 = creatPerson("林青霞",18);
			console.log(jb1);
			jb1.sayname();

2.2"啪"的一下,很快啊,造完了,造个其他的物种咋样,creatDog()造狗

//造狗呢?来,上代码!
			function creatDog(name, age){
				var obj = new Object();
				obj.name = name;
				obj.age = age;
				obj.sayname = function(){
					alert("呱呱~~~~");
				};
				return obj;
			}
			var jb2 = creatDog("大黄",45);
			console.log(jb2);
			jb2.sayname();

3.工厂模式:缺点

使用工厂方法创建的对象,使用的构造函数都是Object所以创建的对象都是Object这个类型,就导致我们无法区分出多种不同类型的对象

javascript  趣讲工厂模式“造人”_工厂方法


下一讲,我们来讲一下规避这种缺点