个人主页:《爱蹦跶的大A阿》
当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》
目录
✨ 前言
✨ 正文
第一节:构造函数
第二节:new操作符
第三节:实例与原型
✨ 结语
JavaScript中的构造函数是一种特殊的函数,用于生成对象。它们通常以大写字母开头,可以通过new操作符来调用。
new操作符在调用构造函数时会进行以下操作:
举个例子:
function Person(name) {
this.name = name;
}
Person.prototype.sayName = function() {
console.log(this.name);
};
const person = new Person("John");
person.sayName(); // 输出 "John"
这里调用new Person("John")时:
所以person对象就可以调用继承的sayName方法。
需要注意的是,如果构造函数返回了一个对象,那么new表达式会直接返回这个对象,而不是创建的空对象:
function Person(name) {
this.name = name;
return {
name: name
};
}
const person = new Person("John");
console.log(person.name); // 输出 "John"
这里构造函数返回了一个对象,new表达式直接将这个对象返回了,而不是内部创建的空对象。
// 构造函数定义
function Person(name, age) {
this.name = name;
this.age = age;
}
// 调用构造函数
const person = new Person('Jack', 18);
function Person(name) {
this.name = name;
return {
name: name
};
}
const person = new Person('Jack');
console.log(person.name); // Jack
这么一比对,可以看出当构造函数返回对象时,new会将那个对象返回,而不是新建的this对象。
function Person() {}
var person = new Person();
person.[[Prototype]] -> Person.prototype -> Object.prototype -> null
这样可以更直观地呈现原型链的层级关系。
另外,在讲解构造函数和原型关系时,可以添加更明确的说明:
构造函数的prototype属性指向原型对象,原型对象包含实例共享的属性和方法。实例通过__proto__隐式原型属性关联到原型对象,从而可以通过原型链查找属性和方法。
通过这三个部分的讲解,我们全面详细地剖析了JavaScript中构造函数和new的工作原理、特性以及如何共同应用它们实现面向对象编程。这篇博客内容偏理论和概念性,如果需要的话可以补充更多具体代码案例进行辅助说明。请检查是否需要修改或补充解释某些部分。