区分工厂函数和构造函数。
工厂函数
function people(name,sex){
let obj = new Object();
obj.name = name;
obj.sex = sex;
obj.saySex=fuction(){
alert(`${this.name}的性别是${this.sex}`)
}
return obj;
}
let people1 = people('小明', '男')
let people2 = people('小颖', '女')
构造函数
function people(name,sex){
this.name = name;
this.sex = sex;
this.saySex=fuction(){
alert(`${this.name}的性别是${this.sex}`)
}
}
let people1 = new people('小明', '男')
let people2 = new people('小颖', '女')
console.log(people1 instanceof people) //true
console.log(people2 instanceof people) //true
两者书写上的不同:
- 工厂函数创建了对象Object
- 工厂函数多了return obj
- 构造函数用this取代对象
含义上的区别:
- 工厂函数创造了两个人,但他们无法确认是不是同一类
- 构造函数能够判断两个人都同属于people
构造函数为之后应用的所有对象都挂上了属性,有了属性就做了分类,就不仅仅只是对象了。就可以创造更多分类,人、动物等等的不同类。这也是构造函数最大的优势。
网友评论