首页 > 技术文章 > JS基础_构造函数

ZHOUVIP 2017-10-24 23:39 原文

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <script type="text/javascript">
 7         
 8             /*
 9              * 创建一个构造函数,专门用来创建Person对象的
10              *     构造函数就是一个普通的函数,创建方式和普通函数没有区别,
11              *     不同的是构造函数习惯上首字母大写
12              * 
13              * 构造函数和普通函数的区别就是调用方式的不同
14              *     普通函数是直接调用,而构造函数需要使用new关键字来调用
15              * 
16              * 构造函数的执行流程:
17              *     1.立刻创建一个新的对象
18              *     2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
19              *     3.逐行执行函数中的代码
20              *     4.将新建的对象作为返回值返回
21              * 
22              * 使用同一个构造函数创建的对象,我们称为一类对象,也将一个构造函数称为一个类。
23              *     我们将通过一个构造函数创建的对象,称为是该类的实例
24              * 
25              * this的情况:
26              *     1.当以函数的形式调用时,this是window
27              *     2.当以方法的形式调用时,谁调用方法this就是谁
28              *     3.当以构造函数的形式调用时,this就是新创建的那个对象
29              * 
30              */
31             
32             function Person(name , age , gender){
33                 this.name = name;
34                 this.age = age;
35                 this.gender = gender;
36                 this.sayName = function(){
37                     alert(this.name);
38                 };
39             }
40             
41             function Dog(){
42                 
43             }
44             
45             var per = new Person("孙悟空",18,"");
46             var per2 = new Person("玉兔精",16,"");
47             var per3 = new Person("奔波霸",38,"");
48             
49             var dog = new Dog();
50             
51             console.log(JSON.stringify(per));//{"name":"孙悟空","age":18,"gender":"男"}
52             console.log(JSON.stringify(dog));//{}
53             
54             //-------------------------------------------------------------------------------
55             
56             /*
57              * 使用instanceof可以检查一个对象是否是一个类的实例
58              *     语法:
59              *         对象 instanceof 构造函数
60              * 如果是,则返回true,否则返回false
61              */
62             console.log(per instanceof Person);//true
63             console.log(dog instanceof Person);//false
64             
65             
66             /*
67              * 所有的对象都是Object的后代,
68              *     所以任何对象和Object做instanceof检查时都会返回true
69              */
70             console.log(dog instanceof Object);//true
71             
72             
73             
74         </script>
75     </head>
76     <body>
77     </body>
78 </html>

 

推荐阅读