gpt4 book ai didi

javascript - 如何在 JavaScript 中向对象添加函数而不会导致内存效率低下

转载 作者:行者123 更新时间:2023-11-30 19:03:14 25 4
gpt4 key购买 nike

假设我们有一个对象foo

var foo = {
x: 0
}

然后我们向它添加一个函数 fx,如下所示:

foo.fx = function() {do_something(this.x)}

如果我们在循环中或在函数调用中多次执行此过程,JavaScript 引擎是多次创建该 fx 函数,还是只创建一次函数并仅更改地址这个?

例如

function objectMaker() {
function fx() {
this.x += 1;
}

var foo = {
x: 0,
fx: fx
}

return foo;
}

objectMaker 函数总是为 fx 方法分配内存还是只创建一次?

最佳答案

由于函数是通过引用传递的(如数组),如果您声明一次函数,您可以将它分配给多个对象,而无需重复它。

在您的 objectMaker 中,无论何时调用函数,都会重新定义 fx 函数。从 objectMaker 中提取 fx(定义一次),并将其分配给每个创建的对象。

// define the function once
function fx() {
return this.x += 1;
}

function objectMaker() {
return {
x: 0,
fx
}
}

var foo = objectMaker()
var bar = objectMaker()

console.log(foo.fx())
console.log(bar.fx())
console.log(foo.fx === bar.fx)

关于javascript - 如何在 JavaScript 中向对象添加函数而不会导致内存效率低下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59271305/

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