gpt4 book ai didi

javascript - 在 JavaScript 中创建对象

转载 作者:行者123 更新时间:2023-11-28 20:44:54 26 4
gpt4 key购买 nike

像在函数 ManA 中创建新对象或通过调用构造函数 ManB 来创建新对象有什么区别吗?

function ManA(name, age)
{
return { name: name, age: age, getAge: function() { return this.age; } };
}

function ManB(name, age)
{
this.name = name;
this.age = age;
this.getAge = function() { return this.age; };
}

var manA = ManA("Tom", 28);
var manB = new ManB("Frank", 25);

谢谢

最佳答案

不同之处在于 manA [[Ptototype]] 链是:

manA -> Object.prototype -> null

manB [[Prototype]] 链是:

manB -> ManB.prototype -> Object.prototype -> null

因此,在第二种情况下,您可以通过将方法添加到 ManB.prototype 来向 manB(以及 ManB 的所有实例)添加方法。 。您无法使用 ManA 实例执行此操作 [请参阅注释]。因此,getAge 方法可以位于构造函数的原型(prototype)上,为每个实例节省几个字节的内存。

注意

您可以向 manA 原型(prototype)链添加方法,但唯一可用的是 Object.prototype,因此每个对象都会继承它们。这被认为是非常糟糕的风格,您应该保留内置对象。

关于javascript - 在 JavaScript 中创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13672712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com