2016-04-05 5 views
1

私のコードを拡張するエラーは、次のようなものです。なぜこのコードが機能しないのですか?Javascriptのオブジェクト

+2

'Example.myMethod =関数(){};'コンストラクタに取り付けられた機能ではなく、プロトタイプの方法で、 '例を使用します。 prototype.myMethod = function(){}; ' – somethinghere

答えて

2

Example.myMethodは、コンストラクタ関数/オブジェクトに付加された関数ですが、プロトタイプの一部ではありません。これは静的関数と呼ばれることがあります(ES6ではまさにそれです)。それらプロトタイプの一部行い、試作品自体に追加する:

function Example(){} 
Example.prototype.myMethod = function(){}; 
function SpecificExample(){} 
SpecificExample.prototype = Object.create(Example.prototype); 
// As @JaredSmith said, you shouldn't change the constructor, and why would you? 
// function SpecificExample(){} IS your constructor. So... 
// SpecificExample.prototype.constructor = SpecificExample; 
// should simply be removed. 
+0

あなたは技術的に*できますが、実際には... ... –

+0

@JaredSmith技術的にはかなり多くのことが可能ですが、そうです正しい、正しいこと。私はそれを変更させてください。 – somethinghere

+0

ありがとう、私は静的メソッド(私はそれが必要)のようなものであることを知っている、問題は、私はコンストラクタを変更することはできませんでした。 @ JaredSmithパフォーマンスの問題のようなものがありますか? – Joy

関連する問題