new 关键字的用途是什么?
主题
JavaScriptOOP
在GitHub上编辑
TL;DR
JavaScript 中的 new
关键字用于创建用户定义的对象类型或具有构造函数的内置对象类型的实例。 当你使用 new
时,它会做四件事:它创建一个新对象,设置原型,将 this
绑定到新对象,并返回新对象。
function Person(name) {this.name = name;}const person1 = new Person('Alice');console.log(person1.name); // Alice
new
关键字的用途
创建一个新对象
new
关键字用于创建对象的新实例。 当你使用 new
调用构造函数时,它会创建一个新对象。
function Car(model) {this.model = model;}const myCar = new Car('Toyota');console.log(myCar.model); // Toyota
设置原型
新对象的内部 [[Prototype]]
属性被设置为构造函数的 prototype
属性。 这允许新对象从构造函数的原型继承属性和方法。
function Animal(type) {this.type = type;}Animal.prototype.speak = function () {console.log(`${this.type} makes a sound`);};const dog = new Animal('Dog');dog.speak(); // Dog makes a sound
将 this
绑定到新对象
在构造函数内部,this
指的是正在创建的新对象。 这允许你将属性和方法添加到新对象。
function Book(title) {this.title = title;}const myBook = new Book('JavaScript Essentials');console.log(myBook.title); // JavaScript Essentials
返回新对象
new
关键字隐式地返回由构造函数创建的新对象。 如果构造函数显式地返回一个对象,则将返回该对象。
function Gadget(name) {this.name = name;return { type: 'Electronic' };}const myGadget = new Gadget('Smartphone');console.log(myGadget.type); // Electronicconsole.log(myGadget.name); // undefined