你就是上帝,JS中的对象构造函数解析
什么是对象?
对象就是能够形象化描述的东西,例如:一个杯子,一条狗,一匹马,一辆车
实例化就是准确的描述:一个红色的杯子,一个蓝色的杯子,红色和蓝色就是特有的,杯子就是对象,是公有的;
这些东西就是上帝创建的对象,那么我们在编程中能够创造对象就好比拥有了上帝的能力。
在JS中创建一个‘亚当’对象:
var person = {
name:‘亚当’,sex:'男'
}
上帝创造了亚当,夏娃,但是并不是都创建每一个人,我们每个人都有自己的名字,相貌,性别,年龄,爱好等等这些就是对象实例化;但是我们都必须像亚当一样,有手,有脚,眼镜,鼻子,嘴巴。那么就很清楚了,我们是上帝,在JS中创建了’亚当‘对象,实例化一个对象就是造人的过程。当然不是现实生活中造人了,哈哈
能从一个‘亚当’对象中实例化无限的独特的凡人就是面向对象编程;
如何实例化?
在JS中 用 new 关键字来实例化。
下面是构造函数创建对象:
function Person(name,sex,age){
this.name = name;
this.sex=sex;
this.age=age
}
那么构造函数为什么叫构造函数?
那是因为构造函数赋予了我们向上帝一样的能力,能够构建一个亚当模型,剩下的凡人就可以通过new轻松创建了;
在没有构造函数之前 有工厂模式生成对象,那不是真正的面向对象编程,只是重复的创建对象;
只有使用构造函数才能让我们变成上帝。
造人过程: var people1 = new Person('麻花疼',‘男’,‘47’);
var people2 = new Person('麻云',‘男’,‘53’);
console.log(pepole1 instanceof Person);//true
// instanceof 就是判断这个实例所属于哪个对象;
就是这么简单,创出了独特的人类。
在new的过程中,这个构造函数内部发生了什么呢:
1、创建一个新的对象,这个对象的类型是object。
2、往对象添加属性。
3、return出这个新对象。
构造函数还是有缺陷的,比如一个people1和people2都有共同的方法
sayName:function(){
console.log(this.name);
}
这么每一个实例都有了sayName方法;那怎么办,我们可以把方法提出来给原型(prototype),把特有的属性留给构造函数。
这就是完整的构造函数,完整的造人过程。