2016-05-18 12 views
1

関数はオブジェクトを作成することを意味するオブジェクトjavascriptの関数とオブジェクトに違いはありませんか?本<a href="http://bdcampbell.net/javascript/book/javascript_the_good_parts.pdf" rel="nofollow">Javascript: The good parts</a>著者で

if (typeof Object.create !== 'function') { 
Object.create = function (o) { 
var F = function() {}; 
F.prototype = o; 
return new F(); 
}; 
} 
var another_stooge = Object.create(stooge); 

を作成するために、次のコードを使用するが、それは代わりに関数を返します。 (参考 - 第3章、ページ番号:22)

+0

どのように関数を返すと判断していますか? 'Object.create'は、渡されたオブジェクトの新しいインスタンスを返します。 –

+0

JavaScript *のすべての関数は*オブジェクトです。 – Marcus

+0

Marcusが言ったように、すべての関数はオブジェクトですが、すべてのオブジェクトが関数ではありません。リテラル構文で作成されたオブジェクトは関数ではありません。そして今、ES6では明らかに機能ではないクラスがあります。 – Burimi

答えて

1

javascriptの関数とオブジェクトに違いはありませんか?

関数は、呼び出すことができるオブジェクトであり、異なる構文で作成されます。

著者は、オブジェクトを作成するには、次のコードを使用しています[...]

今後これ以上の必要があります。 Object.createは標準化されており、ほぼすべてのブラウザで実装されています。

とにかく、この恐ろしいpolyfillを見て、Object.createが何をしているのか理解しようとするべきではありません。私たちは、Object.createをlangaugeプリミティブとして扱う必要があります(必要ならば、それに関してはnew演算子を定義することができます)。

この関数はオブジェクトを作成するためのものですが、代わりに関数を返します。

いいえ、そうではありません。 Fを返しません。F(コンストラクタとして)を呼び出した結果、return new F()を返します。

関連する問題