我们有没有办法在js这样做?
const pseudoFunction = {};
pseudoFunction();
可能会向pseudoFunction
添加方法,构造函数或其他内容吗?
答案 0 :(得分:4)
没有
函数是对象,但并非所有对象都是函数。你只能打电话给函数。
您可以看到the process for creating a function object in the spec。重要的是要注意第3步:
将F的[[Class]]内部属性设置为“Function”。
您无法自行设置内部属性,因此无法将非功能转换为函数。
答案 1 :(得分:1)
const something = {};
something();
答案 2 :(得分:1)
你不能用你正在展示的东西做到这一点。你无法调用一个对象。但是你可以将属性附加到函数中(但是,这通常是一个糟糕的模式,你正试图以错误的方式实现某些东西)。
let myFunction = function() {
console.log(myFunction.apples);
// Remember, _this_ here is not the function, but the caller scope
};
myFunction.apples = "oranges";
再一次,虽然这是可行的,但你想要达到的目标可能是你可以用惯用的方式做的事情。
答案 3 :(得分:0)
不,但你可以做反过来:首先创建函数,然后分配属性和方法:
function doSomething() {
console.log('done it');
}
doSomething.friend = 'John';
doSomething.printFriend = function() {
console.log(this.friend);
}
// Make some calls:
doSomething();
doSomething.printFriend();