什么是构造函数

南山隐士 2022年06月25日 23 0

在 JavaScript 中,用 new 关键字来调用的函数,称为构造函数。它们的函数名一般首字母为大写

而其实准确的来说JavaScript是没有构造函数的,只有函数的构造调用,叫构造函数只是为了迎合其他语言,才这么说的!

因为JavaScript只有通过new调用才会创建出构造函数,而其他语言,构造函数根本就不是通过new来创建的,它有自己独特的语法,而我们只有通过new才能创建出构造函数,所以我们称为函数的构造调用

作用和弊端

构造函数的作用在于,让我的实例对象可以继承我构造函数中的属性和方法,但是它的缺点同一个对象实例,没法共享属性和方法,也就是说当我都是通过new某个构造函数创建实例对象的时候,我想这些对象都继承某个相同的方法,如果都写在我的构造函数当中,那么其实它们这2个方法不是相同的,它会在堆中开辟新的空间,这样就会造成内存的浪费了!

//创建一个构造函数
    function Person (name, age) {
      this.name = name
      this.age = age
      this.hello = function () {
        console.log('Hello,遥近')
      }
    }
    
    const yaojin = new Person('遥近', 18)
    const yj = new Person('遥近666', 18)
    console.log(yaojin.hello === yj.hello)//false

    //把共有的方法和属性存放到prototype中
    Person.prototype.say = function () {
      console.log('遥近您好')
    }
    console.log(yaojin.say === yj.say)//true

于是有了原型链的存在了,把我一个实例上共有的方法和属性都放在prototype对象中!这样就可以通过原型链来一步步找到对应的属性和方法了!

Last Updated: 2022/06/25 18:58:14
什么是原型链? 了解语法糖