我们可以将对象作为OOJS中的函数吗?

时间:2017-03-03 07:33:17

标签: javascript angularjs

我在过去的采访中遇到了上述问题。我说不。我对此有疑问。我不知道我们怎么能将对象用作函数?

2 个答案:

答案 0 :(得分:0)

是的,我们可以,因为每个function在JS中也是object。但反之亦然

我有一个function并且还有一个property。所以我可以调用它并使用它的属性

function hello(){
   console.log('Hello');
}

hello.someProp = 'Some Prop';

hello();
console.log(hello.someProp);

答案 1 :(得分:0)

我想详细说明一下。

JavaScript实际上是面向对象的原因是因为无论何时声明一个函数,它都只是JavaScript的内置对象的新实例,名为函数

例如当您声明 var a = {}时, 对象构造函数会创建一个新对象。同样,每当你声明一些函数如函数时,SomFucn(){}函数构造函数会创建新函数。

所以是的,我们可以将函数用作对象,但反之亦然。

结帐以下代码。工作小提琴在这里https://jsfiddle.net/95ejaydL/(检查控制台);

console.log(typeof(Object));

console.log(typeof(Function));


Function.prototype.sayHello = "Hello function property";

Object.prototype.sayHello = "Hello Object";

var a = {};

console.log(a.sayHello);

function Hello(){
  console.log("Hello from method");
}

Hello();

console.log(Hello.sayHello);

a();

请告诉我这是否有用。

感谢。