zoukankan      html  css  js  c++  java
  • 构造函数

     1 <!DOCTYPE html>
     2 <html>
     3     <head>
     4         <meta charset="utf-8">
     5         <title></title>
     6     <script type="text/javascript">
     7    /*
     8    使用工厂方法创建对象
     9    通过该方法可以大批量创建对象
    10    */
    11   function createPerson(name,age,gender){
    12       var obj=new Object();
    13       obj.name=name;
    14       obj.age=age;
    15       obj.gender=gender;
    16       //将新的对象返回
    17       obj.sayName=function();
    18       alert(this.name);
    19       return obj;
    20   }
    21   var obj2=createPerson("w",20,"1");
    22   console.log(obj2);
    23   /*
    24   使用工厂方法创建的对象,使用的构造函数都是Object
    25   所以创建的对象都是Object这个类型,就导致无法区分出多种不同类型的对象
    26   
    27   */
    28  /*
    29  创建一个构造函数,专门用来创建Person对象的
    30  构造函数就是一个普通的函数,创建方式和普通函数没有区别
    31  不同的是构造函数习惯上首字母大写
    32  
    33  构造函数和普通函数的区别就是调用方式的不同
    34  普通函数就是直接调用,构造函数需要使用new关键字
    35  
    36  构造函数执行流程:
    37  1.立刻创建一个新的对象
    38  2.将新建的对象设置为函数中this,在构造函数中可以使用this来引用新建的对象
    39  3.逐行执行函数中的代码
    40  4.将新建的对象作为返回值
    41  
    42  使用同一个构造函数创建的对象,称为一类对象,也将构造函数称为一个类
    43  */
    44 function Person(name,age){
    45     this.name=name;
    46     this.age=age;
    47     //this.sayName=function(){
    48     //    alert("i am"+this.name);
    49     //}
    50     this.sayName=fun;
    51 }
    52 //将sayName方法在全局中定义
    53 function fun(){
    54     alert(this.name);
    55 }
    56 //var per=Person();普通函数调用
    57 var per=new Person("123",12);//构造函数调用
    58 var per2=new Person("123",123);
    59 console.log(per.name);
    60 console.log(per.sayName()==per2.sayName());//true调用的是同一个函数
    61 /*
    62 使用instanceof可以检查一个对象是否是一个类的实例
    63 对象 instanceof 构造函数 如果是则返回true,否则返回false
    64 
    65 this:
    66 1.当以函数形式调用时,this是window
    67 2.当以方法形式调用时,谁调用this就是谁
    68 3.当以构造函数形式调用时,this就是新创建的那个对象
    69 */
    70 
    71 /*
    72 创建一个Person构造函数
    73 在Person构造函数中,为每一个对象都添加了一个sayName方法,
    74 目前我们的方法是在构造函数内部创建的,也就是构造函数每执行一次就会创建一个新的sayName方法
    75 这是完全没有必要的,完全可以使所有的对象都调用一个方法
    76 */
    77 console.log(per instanceof Person);
    78     </script>
    79     <head>
    80     <body>
    81     </body>
    82 </html>
  • 相关阅读:
    20145209 《信息安全系统设计基础》第5周学习总结
    20145209 《信息安全系统设计基础》第3周学习总结
    20145209 《信息安全系统设计基础》第1周学习总结
    20145209 《信息安全系统设计基础》第0周学习总结
    单调栈&单调队列入门
    GYM 101617 F
    codeforces 13 D
    codeforces 13 b
    G102040I
    19南昌网络赛L
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/11221852.html
Copyright © 2011-2022 走看看