zoukankan      html  css  js  c++  java
  • 2.3构造函数模式基础

    构造函数模式的目的就是为了创建一个自定义类,并且创建这个类的实例

    function CreateJsPerson(name,age){
      // 浏览器默认创建的对象就是我们的实例p1 -》 this
      this.name = name; // p1.name = name
      this.age = age;
      this.writeJs = function () {
        console.log("my name is" + this.name)
      }
      // 浏览器再把创建的实例默认的进行返回 }
    var p1 =new CreateJsPerson("张三"20); //CreateJsPerson中的this是当前实例p1
    p1.writeJs(); // writeJs中的this是p1
    var res =
    CreateJsPerson("aaaa",30); // 这样写不是构造函数模式执行而是普通的函数执行,由于没有写return所以res= undefined,并且CreateJsPerson这个方法中的this是window
    console.log(res) // undefined
    var p2 =new CreateJsPerson("李四",30);
    p2.writeJs();

    构造函数模式和工厂模式的区别:

      1.执行的时候

        普通函数执行: createJsPerson()

        构造函数模式执行: new CreateJsPerson() 通过new执行后,我们的CreateJsPerson就是一个类了

        而函数执行的返回值(p1)就是CreateJsPerson这个类的一个实例

      2.在函数代码执行的时候

        相同点: 都是形成一个私有作用域,然后经历形参赋值,预解释,代码开始从上到下执行(类和普通函数一样,它也有普通函数的一面)

        不同点:1)在代码执行之前,不用自己在手动的创建obj对象了,浏览器会默认的创建一个对象数据类型的值(这个对象其实就是我们当前类的一个实例),

            2)接下来代码从上到下执行,以当前实例为执行的主体(this代表的就是当前的实例),然后分别把属性名和属性值赋值给当前的实例

            3)最后浏览器会默认的把创建的实例返回

    引入知识点:

    1.创建一个数组:

      var ary = [] // 字面量方式

      var ary = new Array(); // 实例创建的方式 -》构造函数模式执行的方式

      不管哪一种方式ary都是Array这个类的一个实例

    2.JS中所有的类都是函数数据类型的,它通过new执行变成了一个类,但是它本身也是一个普通的函数

    JS中所有的实例都是对象数据类型的

    3.在构造函数模式中,类中(函数体中)出现的this.xxx = xxx 中的this是当前类的一个实例

    4.p1和p2都是 CreateJsPerson这个类的实例,所以都拥有writeJs这个方法,但是不同实例之间的方法是不一样的

      在类中给实例增加属性(this.xxx = xxx)属于当前实例的私有属性,实例和实例之间是单独的个体,所以私有属性之间是不相等的

       console.log(p1.writeJS === p2.writeJS) ->false

  • 相关阅读:
    结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程--课程实验3
    深入理解系统调用 -- 课程实验2
    基于mykernel 2.0编写一个操作系统内核--课程实验1
    如何评测软件工程知识技能水平?
    如何评测一个软件工程师的计算机网络知识水平与网络编程技能水平?
    深入理解TCP协议及其源代码
    Socket与系统调用深度分析
    创新产品的需求分析:未来的图书是什么样的
    构建调试Linux内核网络代码的环境MenuOS系统
    php db2 返回当前insert记录的自增id
  • 原文地址:https://www.cnblogs.com/z-dl/p/8917101.html
Copyright © 2011-2022 走看看