gpt4 book ai didi

javascript - 使用 JavaScript 类语法时,类是否默认将方法设置为原型(prototype)?

转载 作者:行者123 更新时间:2023-11-30 20:36:00 27 4
gpt4 key购买 nike

我正在学习原型(prototype)继承,我最近了解到,如果我使用工厂函数创建所有具有方法的对象,结果是使用了不必要的内存量,并且通过在原型(prototype)上设置方法,生成所有对象来自工厂函数的函数将在内存中共享相同的函数。构造函数也是如此。

话虽如此,当我使用类语法生成对象时,method1method2 方法默认显示在原型(prototype)中 (__proto__) 生成的对象。我原以为必须像使用构造函数那样手动执行...

Test.prototype.get = somGetFunctionDefinedOutsideOfClass

为了将 method1method2 方法设置为原型(prototype)。

这是否意味着如果我生成 100 万个对象都使用同一个类,它们的原型(prototype)都设置为相同的方法,我就不必手动设置原型(prototype)了?

const Test = class TestClass {
constructor() {
this.variable = 'testVariable'
}
method1() {
console.log('method1')
}
method2() {
console.log('method2')
}
}

const obj = new Test()
console.log(obj)
obj.method1() // logs: method1

使用构造函数的示例,其中方法不在 __proto__

  const Test = function TestObjectGenerator() {
this.method1 = function() {
console.log('method1')
}
this.method2 = function() {
console.log('method2')
}
}

const obj = new Test()
console.log(obj)
obj.get()

最佳答案

是的。类只是“功能对象”的语法糖。 ES6 类方法自动设置为原型(prototype),这意味着它们的行为与 ES5 函数声明对象没有区别。

关于javascript - 使用 JavaScript 类语法时,类是否默认将方法设置为原型(prototype)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49828239/

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