其他分享
首页 > 其他分享> > 理解JS中的构造函数

理解JS中的构造函数

作者:互联网

JavaScript中的构造函数

理解构造函数模式

为什么要使用构造函数模式

  function createPerson(name,age){
    let o = new Object();
    o.name = name;
    o.age = age;
    o.sayName = function(){
        console.log(this.name)
      }
    return o;
  }

通过构造函数模式创建对象

  function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayName = function(){
      console.log(this.name);
    }
  }

  let person1 = new Person('simple',20);
  let person2 = new Person('zywoo',19);

  person1.sayName(); //simple
  person2.sayName(); //zywoo

构造函数模式与工厂模式的区别

new一个对象的过程

  let player = new Person("curry",33);

上述代码的过程如下:

  1. 在内存中创建一个新对象
  2. 这个新对象的内部 [[Prototype]] 特性被赋值为构造函数的prototype属性:
  player.__proto__ = Person.prototype
  1. 构造函数内部的this被赋值给新的对象 也就是新对象和函数调用的this会绑定起来
  Person.call(player,"curry",30);
  1. 执行构造函数内部的代码 即给新对象添加属性和方法
  player.name;
  player.age;
  player.sayName();
  1. 如果构造函数返回非空对象,则返回该对象;否则,返回刚创建的新对象

构造函数与普通函数

  // 作为构造函数
  let person = new Person('simple',20);
  person.sayName(); // simple

  // 作为普通函数调用
  Person('zywoo',19); // 添加到window对象
  window.sayName(); // zywoo

构造函数的问题

  function Person(name,age){
    this.name = name;
    this.age = age;
    this.sayName = sayName;
  }

  function sayName(){
    console.log(this.name);
  }

标签:name,age,JS,Person,理解,new,sayName,构造函数
来源: https://blog.csdn.net/danyuana/article/details/115416103