• JavaScript学习笔记(九)对象


    1.理解对象

    // 1.数据属性
    configurable(delete)
    enumerable(for in)
    writable(update)
    value
    
    // 2.访问器属性
    configurable(delete)
    enumerable(for in)
    get
    set
    
    Object.defineProperty(obj, prop, descriptor)
    Object.defineProperties(obj, descriptors)
    
    Object.getOwnPropertyDescriptor(obj, prop)
    Object.getOwnPropertyDescriptors(obj)

    2.创建对象

    // 1.工厂模式
    // 2.构造函数
    // 构造函数创建对象的步骤
    (1)创建一个新对象
    (2)this只想新对象
    (3)执行函数代码
    (4)返回新对象(如果没有返回的话)
    // 3.原型模式
    //
    constructor person1.constructor === Person person1 instanceof Person Person.prototype.constructor === Person person1.__proto__ === Person.prototype Person.prototype.isPrototypeOf(person1) Object.getPrototypeOf(person1) === Person.prototype person1.hasOwnProperty('name') // 实例属性(可枚举和不可枚举) in // 实例属性和继承属性(可枚举和不可枚举) for in // 实例属性和继承属性(可枚举) Object.keys(obj) // 实例属性(可枚举) Object.getOwnPropertyNames(obj) // 实例属性(可枚举和不可枚举) // 调用构造函数时会为实例添加一个指向最初原型的__proto__指针,把原型修改为另一个对象就等于切断了构造函数与原型之间的联系。实例中的指针仅指向原型,而不指向构造函数。
    // 4.组合构造函数和原型
    function Person(){}
    Person.prototype = {}
    // 5.动态原型
    function Person(name, age) {
      this.name = name
      this.age = age
      if (typeof this.sayName !== 'function') {
        Person.prototype.sayName = function() {
          console.log(this.name)
        }
      }
    }
    // 6.寄生构造函数
    function specialArray() {
      values = new Array()
      values.push.apply(values, arguments)
      values.toPipedString = function() {
        return this.join('|')
      }
      return values
    }

    3. 继承

    // 1.借用构造函数
    function SuperType(name) {
      this.name = name
      this.colors = ['red', 'green']
    }
    function SubType(name) {
      SuperType.call(this, name)
    }
    // 2.组合继承
    function SuperType(name) {
      this.name = name
      this.colors = ['red', 'green']
      this.sayName = function() {
        console.log(this.name)
      }
    }
    function SubType(name) {
      SuperType.call(this, name)
    }
    SubType.prototype = new SubType()
    SubType.prototype.sayAge = function() {
      console.log(this.age)
    }
  • 相关阅读:
    KMP算法
    Python 正则表达式
    Python 装饰器
    C/C++ 之输入输出
    PAT(Basic Level)--个位数统计
    Java 接口与抽象类
    Java集合-01概述
    数据结构--红黑树
    数据结构--(AVL)平衡二叉树
    数据结构--二叉搜索树
  • 原文地址:https://www.cnblogs.com/zhoulixue/p/10816394.html
Copyright © 2020-2023  润新知