蘑小De菇

个人技术博客

hi,我是蘑小De菇,一名前端开发者。


记录个人对技术的理解和开发过程中遇到的问题,欢迎了解更多。

构造函数模式

构造函数

  1. 构造函数用于创建特定类型的对象的,如:Object()、Array(),当然也可以自定义

  2. 构造函数首字母大写(用于区分)

  3. 构造函数不一定是函数声明表达式,也可能是赋值变量表达式

  4. 构造函数如果没有传参数,实例化时可不添加括号 如:let person = new Person

  5. 构造函数也是函数,任何函数只要用new调用就是构造函数

    1. 不指定this指向(不是new或call、apply调用)this只想global对象(浏览器window对象)
    2. 指定特定对象为作用域,即把this指向这个对象,执行代码后所有属性都会添加在这个对象上
const Person = function(name,age) {
    this.name = name
    this.age = age
    this.sayName = function() {
        console.log(name)
    }
}

// 构造函数调用
cosnt person1 = Person("limei",20)
person1.sayName()

// 普通函数调用
Person("limei1",21)
window.sayName()

// 在另一个对象的作用域中调用
let o = new Object()
Person.call(o,"limei2",22)
o.sayName()

构造函数的问题

构造函数内定义的方法会在每个实例都创建一遍

解决办法: 把函数定义在构造函数外部

下一篇

原型模式