Javascript进阶课程---2、使用构造函数创建对象

Javascript进阶课程---2、使用构造函数创建对象

一、总结

一句话总结:

构造函数也是一个函数,只不过是一个特殊的函数,构造函数的函数名的首字母大写,我们一般创建对象都是使用构造函数方式,构造函数创建对象的时候要用new关键字:例如var zhuBaJie=new People('猪八戒',4);

1、构造函数与普通函数相比的特殊之处?

a、构造函数在创建时候的特点:函数名的首字母大写
b、构造函数在使用时候的特点:必须使用new关键字,并且函数名的首字母大写

2、构造函数里面怎么增加属性和方法?

使用的this关键字,例如:this.name=name;
function People(name,age) {
  this.name=name;
  this.age=age;
  this.say=function () {
    console.log('我是天底下最靓的仔,我是'+this.name+',我今年'+this.age+'岁。');
  };
}

3、在构造函数创建对象的时候,如果没有用new关键字来创建对象,会怎样?

这个构造函数就是用普通函数的方式来调用的

4、构造函数中this的指向问题?

在构造函数中,this指向的是后面通过构造函数创建的实例,也是满足 谁调用函数(方法),this就指向谁 的特点的

5、使用构造函数创建对象和使用工厂模式创建对象的区别?

1、使用构造函数创建对象:函数在定义的时候,首字母大写,使用函数的时候,要用new关键字
2、使用构造函数创建对象:我们没有显式的创建对象,也没有显式的返回对象,new关键字给我们做了

6、怎么来判断一个对象是不是一个类的实例?

instanceof关键字,例如:console.log(zhuBaJie instanceof People);

二、使用构造函数创建对象

博客对应课程的视频位置:2、使用构造函数创建对象
https://www.fanrenyi.com/video/21/194

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>使用构造函数创建对象</title>
 6 </head>
 7 <body>
 8 <!--
 9 
10 构造函数:
11 构造函数也是一个函数,只不过是一个特殊的函数
12 
13 构造函数的特殊之处:
14 1、构造函数在创建时候的特点:函数名的首字母大写
15 2、构造函数在使用时候的特点:必须使用new关键字,并且函数名的首字母大写
16 
17 构造函数里面怎么增加属性和方法:
18 使用的this关键字
19 
20 使用构造函数创建对象的好处:
21 可以标注对象
22 
23 在构造函数创建对象的时候,如果没有用new关键字,那么这个构造函数就是用普通函数的方式来调用的
24 
25 在使用构造函数创建对象时,如果使用new关键字创建对象 的时候的特点:
26 说明new关键字给我们隐式的创建了一个对象,和返回了一个对象
27 
28 构造函数中this的指向问题:
29 在构造函数中,this指向的是后面通过构造函数创建的实例,
30 也是满足 谁调用函数(方法),this就指向谁 的特点的
31 
32 使用构造函数创建对象和使用工厂模式创建对象的区别
33 1、使用构造函数创建对象:函数在定义的时候,首字母大写,使用函数的时候,要用new关键字
34 2、使用构造函数创建对象:我们没有显式的创建对象,也没有显式的返回对象,new关键字给我们做了
35 
36 
37 面向对象编程
38 使用构造函数创建对象的时候,构造函数就相当于一个类,利用构造函数创建的对象就是类的实例
39 
40 怎么来判断一个对象是不是一个类的实例
41 instanceof
42 
43 
44 
45 
46 -->
47 <script>
48     function People(name,age) {
49         this.name=name;
50         this.age=age;
51         this.say=function () {
52           console.log('我是天底下最靓的仔,我是'+this.name+',我今年'+this.age+'岁。');
53         };
54     }
55     var zhuBaJie=new People('猪八戒',4);
56     console.log(zhuBaJie);
57     zhuBaJie.say();
58     var tangSen=new People('唐僧',15);
59     console.log(tangSen);
60     tangSen.say();
61 
62     //造狗
63     function Dog(name,age) {
64         this.name=name;
65         this.age=age;
66         this.say=function () {
67             console.log('我是'+this.name+',我今年'+this.age+'岁。');
68         };
69     }
70     var xiaoTianDog=new Dog('哮天犬',99);
71     console.log(xiaoTianDog);
72     xiaoTianDog.say();
73 
74 
75     //不使用new关键字会返回undefined
76     // var wangCai=Dog('旺财',9);
77     // console.log(wangCai);//不使用new关键字会返回undefined
78     // wangCai.say();
79 
80     var wangCai=new Dog('旺财',9);
81     console.log(wangCai);
82     wangCai.say();
83 
84     //怎么来判断一个对象是不是一个类的实例
85     console.log(zhuBaJie instanceof People);
86     console.log(wangCai instanceof People);
87     console.log(wangCai instanceof Dog);
88 
89 </script>
90 </body>
91 </html>

 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/12615301.html