JS创建对象的四种简单方式 (工厂模式和自定义构造函数创建对象的区别)
// 对象:特指的某个事物,具有属性和方法(一组无序的属性的集合)
// 特征------>属性
// 行为------>方法
// 创建对象的四种方式
1 // 1.字面量的方式,就是实例化对象
2 3 var stu1={ 4 name:"小明", 5 age:20, 6 ID:20181111, 7 sex:"男", 8 eat:function(){ 9 console.log("吃烩面"); 10 }, 11 readBook:function(){ 12 console.log("平凡的世界"); 13 } 14 }; 15 16 // 2.调用系统的构造函数 17 18 var stu2=new Object(); 19 stu2.name="小红"; 20 stu2.age=19; 21 stu2.ID=20181112; 22 stu2.sex="女"; 23 stu2.eat=function(){ 24 console.log("吃米饭"); 25 }; 26 stu2.readBook=function(){ 27 console.log("穆世林的葬礼"); 28 }; 29 //方式1、2 创建的对象没有propotype原型属性,3、4通过函数的形式创建的有prototype属性
prototype属性:为一个特定类声明通用的变量或者函数
不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在
var Person = function(){}; var p = new Person(); alert(p.__proto__ === Person.prototype);//true
31 // 3.自定义构造函数的方式
32
33 function Student(name,age,ID,sex){
34 this.name=name;
35 this.age=age;
36 this.ID=ID;
37 this.sex=sex;
38 this.sayHi=function(){
39 console.log("您好!");
40 };
41 }
42 //创建对象--->实例化一个对象,同时对属性进行初始化。
43 // 1.开辟空间存储对象
44 // 2.把this设置为当前的对象
45 // 3.设置属性和方法的值
46 // 4.把this对象返回
47 var stu3=new Student("小天",18,20181113,"男");
48
49
50 // 4.工厂模式创建对象
51
52 function student(name,age,ID,sex){
53 var obj = new Object();
54 obj.name=name;
55 obj.age=age;
56 obj.ID=ID;
57 obj.sex=sex;
58 obj.sayHi=function(){
59 console.log("您好!");
60 };
61 return obj;
62 }
63 var stu4=student("小菊",21,20181114,"女");
工厂模式和自定义构造函数创建对象的区别: