• js高级-构造函数与原型


    1.工厂模式

    由于ES中无法创建类,,开发人员便开发了一种函数,用函数来封装创建对象的细节。

    2.构造函数
      1. 构造函数是用来创建对象的,本质上也是函数,构造函数和普通函数的唯一区别,在于调用方式不同。不存在定义构造函数的特殊语法。任何函数只要通过关键字new来调用,那它就可以作为构造函数。
      1. 将构造函数当作普通函数调用时(即没有使用new关键字),其中的属性和方法被绑定到了windows对象上。(在全局作用域中调用一个函数时,this对象总是指向global对象,浏览器中就是windows对象)

    构造函数的缺点:
    每个方法都要在每个实例上重新创建一遍,占用内存。不同实例上的同名函数是不相等的。

    构造函数模式:
    没有显示创建对象;
    属性和方法赋值给了this对象;
    没有return返回语句
    使用new关键字调用
    构造函数名首字母大写

    3.原型

    每一个函数都有一个prototype(原型)属性,这个属性指向一个对象,即原型对象。原型对象包含了所有实例共享的属性和方法。

    理解原型对象:
    只要我们创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象。默认情况,所有原型对象自动获得一个constructor(构造函数)属性,这个属性指向prototype所在的函数。eg:Persion.prototype.constructor又指向了Persion
    每一个对象实例都有一个内部属性__proto__属性,该属性与构造函数没有直接关系,它指向了原型对象(该属性在火狐,safari和chrome支持,其他方式不可见)

    4.组合使用构造函数和原型模式

    构造函数模式用于定义实例属性,原型模式用于定义方法和共享属性。

  • 相关阅读:
    tcp传送报文
    整理下本周工作中遇到的疑问;uid/euid/suid;docker镜像管理
    网络隔离
    ubuntu 只有客人会话登录(第一次深刻感受文件权限的威力 )
    ubuntu 只有客人会话登录(第一次深刻感受文件权限的威力)
    使用gdb查看栈帧的情况,有ebp
    使用gdb查看栈帧的情况, 没有ebp
    再看perf是如何通过dwarf处理栈帧的
    dwarf是如何处理栈帧的?
    数据库设计的误区—>CHAR与VARCHAR
  • 原文地址:https://www.cnblogs.com/tingshu/p/15216711.html
Copyright © 2020-2023  润新知