构造器和操作符 new-Object 基础

  1. 构造函数
  2. 构造函数的 return 返回值
  3. 构造器中的方法
  4. 参考

一直不太理解的东西。

构造函数

看起来和普通函数就一样。

  • 命名大写字母开头
  • 只能由 “new” 操作符执行

当一个函数由 “new” 操作符执行时,按照一下流程:

  1. 一个新的空对象被创建并分配给 this。
  2. 函数体执行。通常函数体会修改 this,如,添加属性。
  3. 返回 this 的值。
function User(name) {
    this.name = name;
    this.isAdmin = false;
}

执行 new User(...) 做的就是:

function User(name) {
    // this = {}; 隐式创建

    // 修改 this。这里是添加了两个属性
    this.name = name;
    this.isAdmin = false;

    // return this; 隐式返回

}

比每次都使用字面量创建要短得多,而且更易于阅读。
这是构造器的主要目的,** 实现可重用的对象创建代码 **。

从技术上讲,任何函数都可以用作构造器。即:任何函数都可以通过 new 来运行,它会执行上面的三个步骤

构造函数的 return 返回值

明确写出 return 语句时:

  1. 若返回的是一个对象,则就返回此对象
  2. 若返回的是一个基本类型,则此 return 被忽略。

换句话说,带有对象的 return 返回该对象,在所有其他情况下返回 this 。

function A() {
    this.age = 99;
    return { age: 19 };
}
function B() {
    this.arr = [1, 2, 3];
    return [4, 5, 6];
}

function C() {
    this.name = 'TOM';
    return 'John';
}

let a = new A();
let b = new B();
let c = new C();

console.log(a);
// { age: 19 }  丢失 this
console.log(b);
// [ 4, 5, 6 ]  丢失 this
console.log(c); 
// C { name: 'TOM' }  还是 this

构造器中的方法

我们不仅可以将属性添加到 this 中,还可以添加方法到 this 中。

参考


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。
我的空间