gpt4 book ai didi

javascript - 我如何重新定义 myObject 的主要功能,e。 G。 myObject() 在不损坏 myObject 的属性的情况下做了什么,e。 G。我的对象.foo?

转载 作者:行者123 更新时间:2023-11-29 14:53:13 27 4
gpt4 key购买 nike

我有一个有点难以解释的合法 JS 问题。请原谅我莫名其妙的说话方式,努力把握大意。 :P

在 JS 中对象可以有属性。您可以将功能分配给属性。您可以重新定义对象的属性而不改变其其他属性。

var myObject = {};
myObject.myFunction = function() { return 1; };
myObject.bar = "Bar";
myObject.myFunction = function() { return "Another function here"; }
console.log( myObject.bar ); // This is still "bar"

但是对象本身可以是函数。

问题 1:这样一个函数对象的函数的正确术语是什么?我在下面将其称为“函数对象的主要函数”。

我知道在 JS 中所有函数都是函数对象,所以说“函数对象的函数”是不正确的。但是当一个对象 'foo' 可以执行两个函数时:foo()foo.bar(),应该有一种明确的方法来区分这两个函数。

由于函数对象是对象,因此它们可以具有属性。

问题 2:如何重新定义函数对象的主要函数,同时保持其他函数对象的属性不变?

我想要的例子:

myFunctionObject = function () { return 1; }
myFunctionObject.bar = "Bar";

// How do i do this...
myFunctionObject = function () { return "Another function here"; }

// ...so that this still returns "Bar"?
console.log( myFunctionObject.bar );

函数对象的主要函数应该存储在某个地方......可能是一些隐藏的属性,例如。 G。 myFunctionObject.__function__ = function () { return 1; }?

PS 我的目标是了解 JS 内部结构。除了在 [CodeWars]( http://codewars.com 上解决一些疯狂的 JS 功夫练习之外,我并不是说任何实际用例。

最佳答案

What is the correct term for the function of such a function-object? I'll call it "function-object's main function" below.

它被称为“函数”。作为函数本身的(函数)对象的属性称为“方法”。如果您在谈论构造函数上的方法,您还称它们为“静态方法”(属于“类”)。

How do i redefine the function-object's main function while leaving other function-object's properties intact?

你不能。函数的调用行为在 javascript 中是不可变的。

您所能做的就是创建一个新函数,用它覆盖存储旧函数的变量,并复制所有属性。

关于javascript - 我如何重新定义 myObject 的主要功能,e。 G。 myObject() 在不损坏 myObject 的属性的情况下做了什么,e。 G。我的对象.foo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21939726/

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