我不完全知道如何问这个问题,所以我会用例子做。说我有这样的设置:功能与对象的构造
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";
我试过其他疯狂的东西,但似乎没有任何工作。
任何想法?或者我坚持这样做的第一种方式?
你试图解决什么问题? – Pointy
我只想知道如何从一个对象开始,并附加一个函数,所以'x()'运行该函数。 – Mottie
函数是唯一可调用的本机EMCAScript类型。你不能进行非函数调用,因为ECMAScript没有公开任何方式来操作对象的[[Call]]内部属性。如果你想把一个对象变成一个函数,为什么不把它作为一个函数呢? – apsillers