【发布时间】:2023-06-27 19:43:01
【问题描述】:
我不太确定如何问这个问题,所以我会举个例子。假设我有这个设置:
var x = function() {
console.log('YAY!');
};
x.test0 = 0;
x.test1 = 1;
x.test2 = "hello world";
按预期工作:
x(); // YAY!
x.test0 // 0
x.test2 // "hello world"
现在,我想知道如何首先从一个对象开始设置它。我尝试使用构造函数添加函数,但这不起作用。
var x = {
test0 : 0,
test1 : 1,
test2 : 'hello world',
constructor: function() {
console.log('YAY!');
}
}
x(); // object is not a function
x.test0 // 0
x.test2 // "hello world";
我尝试了其他疯狂的事情,但似乎没有任何效果。
有什么想法吗?还是我坚持第一种方式?
【问题讨论】:
-
您要解决的问题是什么?
-
我只是想知道如何从一个对象开始并为其附加一个函数,以便
x()运行该函数。 -
函数是唯一可调用的原生 EMCAScript 类型。您不能使非函数可调用,因为 ECMAScript 没有公开任何方式来操作对象的
[[Call]]内部属性。如果你想把一个对象变成一个函数,为什么不先把它变成一个函数呢? -
在 JS 函数中是一个对象,但反之亦然是不正确的
-
更简洁的代码。但实际上,我只是想知道这是否可能。
标签: javascript function object constructor