在 JavaScript 中,我们可以通过工厂方法的方式来创建一个 对象,通过工厂方法创建对象其实也是通过自定义一个 函数,然后赋予它对象的思想。
不过,通过工厂方法创建对象,我们是在方法里面通过 new Object 来创建一个对象,并最终通过 return 来返回创建的对象。
function createPerson(attr1, attr2, attr3, ...){
var person = new Object();
person.attr1 = attr1;
person.attr2 = attr2;
person.attr3 = attr3;
...
person.func = function(){
//todo
}
return person;
}
我们通过工厂方法 createPerson 的方式来创建对象。工厂模式虽然解决了创建多个相似对象的问题,但是却没有解决对象识别的问题
通过工厂方法创建对象
<!DOCTYPE html>
<html>
<head>
<title>JavaScript工厂方法创建对象</title>
<script type="text/javascript">
console.log("嗨客网(www.haicoder.net)");
function createPerson(name, age, sex){
var person = new Object();
person.name = name;
person.age = age;
person.sex = sex;
person.sayHi = function(){
console.log("I am", this.name, "i am", this.age, "years old", "and my sex is", this.sex);
}
return person;
}
var person = createPerson("HaiCoder", 109, "F");
person.sayHi();
person.name = "haicoder";
person.sayHi();
person.score = 99;
console.log("person name is:", person.name, "score is:", person.score);
</script>
</head>
</html>
程序运行后,控制台输出如下:
我们首先创建了一个函数 createPerson,该函数接受三个参数,这三个参数就是对象的属性,同时函数里面还有一个函数,该函数就是对象的方法。
同时,在 createPerson 函数里面,我们通过 new Object 创建了一个 person 对象,接着,给 person 对象设置属性,并最后返回创建的 person 对象。
最后,我们通过 createPerson 方法创建了一个 person 对象,并且调用了 person 对象的 sayHi 方法。同时,我们看到,通过工厂方法创建的对象,同样支持动态的添加属性。
在 JavaScript 中,我们可以通过工厂方法的方式来创建一个对象,通过工厂方法创建对象其实也是通过自定义一个函数,然后赋予它对象的思想。