【发布时间】:2019-05-06 07:23:07
【问题描述】:
鉴于以下代码,我将记录 2 个 Person 原型实例
function Person(name) {
this.name = name
}
person = new Person('bob');
person2 = new person.constructor('tom')
console.log(person);
console.log(person2);
有趣的是,如果我们省略 new 关键字,如下例所示:
function Person(name) {
this.name = name
}
person = new Person('bob');
person2 = person.constructor('tom')
console.log(person);
console.log(person2);
实际上似乎构造函数被重新运行并使用新参数改变对象。这是怎么回事?
如果没有 new 关键字,则根本不会向 person2 返回任何内容。 person 的 name 属性现在是 'tom'。
如果之前为真,那么没有new 关键字的构造函数会改变原始对象,是否有一个用例可以在对象上再次调用构造函数?
【问题讨论】:
-
只是一个猜测,但也许如果您将对象用作单例并希望通过构造函数更改其中的某些值。
-
在这种情况下为什么不直接使用实例方法
-
就像我说的,我只是猜测,我真的没有具体的例子。也许其他人会。
-
我想这一切都应该从“构造函数”的定义开始。然后我们讨论为什么我们要将它用于预期目的之外的用途。
-
这就是构造函数在没有
new关键字的情况下所做的事情吗?
标签: javascript