2017-07-21 10 views
0

JSの全体が新しく、JS Objectにメソッドを追加しようとしています。 私はオブジェクトを持っています。object.prototype doesnt workを使ったJavascriptの追加メソッド

function Population() { 
    this.size = 30; 
    this.items = []; 
    this.generateRandom; 
}; 

Population.prototype.generateRandom = function() { 
....code here... 
} 

を次のように私は後でgenerateRandomメソッドを定義したい。しかし、私は、私が作成した場合、 "generateRandomは" 機能

ないエラーに

を取得しています新しい人口とそれを実行しようとする私はこのエラーを取得します。

//run the program 
(function(){ 
    //let p = new Pool(); 
    let p = new Population(); 
    p.generateRandom(); 
    //p.generatePopulation(); 
    console.log(p); 
}()); 
+0

「私はオブジェクトを持っている」:あなたがオブジェクトを定義したいので、

また、あなたはclassキーワードを使用することをお勧めします。 'Population()'はオブジェクトではなく、関数なのです –

+0

エラーが発生しているのはどのラインですか?プロトタイプ上で関数を宣言すると動作するはずです。 –

+0

'Population'の特定のインスタンスで関数を定義しようとしていますか、' new Population() 'へのすべての呼び出しで定義しようとしていますか? – guest271314

答えて

0

あなたのコードがあるとして動作するはずです - これを実行してみてくださいは、(関数内でいくつかのコードを置くために自由を取った):

function Population() { 
 
    this.size = 30; 
 
    this.items = []; 
 
}; 
 

 
Population.prototype.generateRandom = function() { 
 
    for(let i = 0; i < this.size; i++) 
 
    this.items.push(Math.floor(Math.random() * 100)); 
 
    return this.items; 
 
}; 
 

 
let p = new Population(); 
 
console.log(p.generateRandom());

+0

ありがとう。私はなぜそれがdoesntなのかわからない。 ここに完全なフィドル https://jsfiddle.net/rshageer/t8nfhun5/ –

0

を多分それはライン3でのごthis.generateRandom;ですこれがあなたの問題の原因です。それは不要です。

class Population { 
    constructor() { 
    this.size = 30; 
    this.items = []; 
    } 
    generateRandom() { 
    // ...your function here 
    } 
}