2017-03-03 17 views
0

私は私の過去のインタビューの間に上記の質問に直面しました。私は言いませんでした。私はこれに疑問を抱いています。オブジェクトをOOJSの関数として使用できますか?

+0

すべてのオブジェクトを関数として使用することはできません。しかし、オブジェクトであるすべての関数をオブジェクトとして使うことができます。 'objName instanceof Function'を試してください。もしそれが関数として使用できるよりも真を返すならば。 –

+0

それを得ました..おめでとう@kloikの友人 –

答えて

0

はい、可能です。functionもすべてJSのobjectです。しかし、その逆ではありません

私はfunctionを持っていて、その中にpropertyも持っています。だから私はそれを呼び出すと、それは私が少し詳しく説明したいと思いプロパティ

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

 
hello.someProp = 'Some Prop'; 
 

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

+0

ああスーパー.....あなたは一例を使って表示できますか? –

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

これが役に立つのかどうか教えてください。

ありがとうございました。

関連する問題