是否可以在javascript中调用“对象”

时间:2017-04-24 13:10:35

标签: javascript

我们有没有办法在js这样做?

const pseudoFunction = {};
pseudoFunction();

可能会向pseudoFunction添加方法,构造函数或其他内容吗?

4 个答案:

答案 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();