关于构造函数的一些个人理解

构造函数是一种特殊的函数,用于创建和初始化对象(也就是创建一个对象的函数),既然是创建对象的函数了,函数是有this指向的,因为是直接调用 所以指向全局对象,而且在复用构造函数时它创建的对象就和第一次使用时创建的对象是一样的了,那么平常的直接使用就有问题了。

function Person(name, age) {
  this.name = name;
  this.age = age;
}
const person = Person('Alice', 25);
const person2 = Person('Alice2', 25);
console.log(person.name);//报错
console.log(person2.name);//报错
//这段代码定义了一个构造函数`Person`,它接受两个参数`name`和`age`,并将它们分别赋值给对象的属性
//`name`和`age`。然后直接调用了构造函数。这意味着`this`关键字指向全局对象,而不是新的对象实例。
//因此,变量`person`和`person2`都是`undefined`。最后,我们尝试访问`person.name`和
//`person2.name`,但由于这些变量未定义,所以会抛出一个错误。

 因此要使用 new 关键字调用构造函数,这样 会创建一个新的空对象,并将该对象作为 this 上下文传递给构造函数,也就可以使用 this 来设置新创建的对象实例的属性和方法。使用 new 关键字是为了创建一个新的对象实例,以便在之后使用该对象实例。

function Person(name, age) {
  this.name = name;//此处的this是指向new出来的实例
  this.age = age;
}
const person1 = new Person('Alice', 25);
const person2 = new Person('Bob', 30);

console.log(person1.name); // 输出:Alice
console.log(person1.age); // 输出:25

console.log(person2.name); // 输出:Bob
console.log(person2.age); // 输出:30

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值