构造函数
构造函数在技术上是常规函数。不过有两个约定:
- 它们的命名以==大写字母==开头。
- 它们==只能由
"new"== 操作符来执行。
当一个函数被使用 new 操作符执行时,它按照以下步骤:
- 一个==新的空对象==被创建并==绑定给
this==。(如果是内置的对象还要链接到原型链) - 函数体执行。通常它会修改
this,为其添加新的属性。 - 返回
this的值。构造器没有return语句。
但是,如果这有一个 return 语句,那么规则就简单了:
- 如果
return返回的是一个对象,则返回这个对象,而不是this。 - 如果
return返回的是一个原始类型,则忽略。
从技术上讲,任何函数(除了箭头函数,它没有自己的 this)都可以用作构造器。即可以通过 new 来运行,它会执行上面的算法。“首字母大写”是一个共同的约定,以明确表示一个函数将被使用 new 来运行。
javascript
function User(name, age = 0) {
this.name = name;
this.age = age;
this.run = function () {
console.log('run');
}
this.walk = () => {
console.log('walk');
}
}
let vipUser = new User('dano', 21);
console.log(vipUser.name);
vipUser.run();
vipUser.walk();