创建对象学习 —— 《高级教程》

 创建单个对象的缺点:用同一个接口创建很多对象,会产生大量的重复代码。

工厂模式就是为了解决这个问题。

工厂模式

解决了创建多个相似对象的问题

复制代码
function createPerson(name, age, job) {     var o = new Object();     o.name = name;     o.age = age;     o.job = job;     o.sayName = function() {         console.log(this.name)     }     return o; }  var person1 = createPerson('Mike', 28, 'xxx'); console.log(person1); person1.sayName(); var person2 = createPerson('Mike', 24, 'aaa'); console.log(person2); person2.sayName();
复制代码

 

缺点:无法解决对象识别的问题——怎样知道一个对象的类型

构造函数模式

ECMAScript中的构造函数可以用来创建特定类型的对象。

复制代码
function Person(name, age , job) {     this.name = name;     this.age = age;     this.job = job;     this.sayName = function() {         console.log(this.name);     } }  var person1 = new Person('Mike', 28, 'teacher'); console.log(person1); person1.sayName(); var person2 = new Person('Danie', 24, 'doctor'); console.log(person2); person2.sayName();
复制代码

与工厂模式的区别:

  • 没有显示的创建对象
  • 将属性和方法赋值给了this对象
  • 没有return语句

构造函数本身也是函数,只不过可以用来创建对象

用new操作符新建构造函数的实例,经历4个步骤:

person1 和 person2 分别保存着 Person 的两个不同实例,都有一个 constructor (构造函数) 属性,指向 Person

复制代码
console.log(person1.constructor == Person); // trueconsole.log(person2.constructor == Person); // true
复制代码
复制代码
console.log(person1.constructor == Object); // falseconsole.log(person2.constructor == Object); // false
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信