创建对象实例
- 基本概念:在JavaScript前端开发中,
new关键字主要用于创建一个构造函数的实例。构造函数是一种特殊的函数,用于初始化新创建的对象。例如,定义一个简单的构造函数来创建一个Person对象:function Person(name, age) { this.name = name; this.age = age; } - 使用方式:当使用
new Person('Alice', 25)时,就会创建一个Person类型的新对象。这个新对象包含了name和age两个属性,其值分别为'Alice'和25。在内存中,会开辟一块新的空间来存储这个对象,并且这个对象是独立于其他对象存在的,每个通过new关键字创建的Person对象都有自己的一套name和age属性。
- 基本概念:在JavaScript前端开发中,
建立对象的原型链
- 原型链关联:
new关键字在创建对象的同时,会将新对象的原型(__proto__)指向构造函数的原型对象(prototype)。例如,继续在Person构造函数的原型对象上添加一个方法:Person.prototype.sayHello = function () { console.log(`Hello, my name is ${ this.name}`); }; - 继承机制:当通过
new Person('Alice', 25)创建一个对象后,这个新对象可以访问sayHello方法。这是因为new操作使得新对象的原型链与构造函数的原型对象建立了关联。在查找对象的属性和方法时,如果对象本身没有该属性或方法,JavaScript会沿着原型链向上查找,直到找到对应的属性或方法或者到达原型链的顶端(Object.prototype)。所以,新创建的Person对象可以通过原型链继承Person.prototype上的方法,这是实现JavaScript对象继承的一种重要方式。
- 原型链关联:
自动执行构造函数并绑定this
- 构造函数执行:
new关键字会自动调用构造函数,并且在构造函数内部,this关键字会自动绑定到新创建的对象上。例如,在Person构造函数中,this.name = name和this.age = age这两行代码,this指代的就是通过new关键字新创建的那个对象。这样就可以方便地在构造函数中初始化对象的属性,将传入的参数赋值给对象的相应属性。 - 返回值规则:一般情况下,构造函数如果没有显式地返回一个对象,
new操作会返回新创建的对象。但如果构造函数返回了一个对象,则new操作会返回这个返回的对象。例如:
这种返回值规则在某些特殊情况下可以用于改变function AnotherPerson(name, age) { this.name = name; this.age = age; return { otherName: 'Other Name' }; } let anotherPerson = new AnotherPerson('Bob', 30); // anotherPerson是{ otherName: 'Other Name' },而不是包含name和age属性的对象new操作的默认行为,不过在大多数常规的构造函数中,通常不会返回一个新的对象,而是通过this来初始化并返回新创建的对象。
- 构造函数执行: