私は、コンストラクタのプロトタイプで関数を持っている:JavaScriptのベストプラクティスのプロトタイプ
function Animal(name) {
this.name = name
}
Animal.prototype.generateToys = function(numberOfToys) {
if(numberOfToys == 1) {
this.createToys();
}
else {
this.createToys();
}
}
createToys
は、まだ宣言する必要があります。そして、それは私の質問が指しているところです。
function Animal(name) {
this.name = name
}
Animal.prototype.generateToys = function(numberOfToys) {
if(numberOfToys == 1) {
this.createToys();
}
else {
this.createToys();
}
function createToys() {
...
...
...
}
}
それとも、以下のような方法(プロトタイプ)として、それを作成します。:generateToys
が、そうのような方法generateToys
内createToys
を作成する方が良いだろう、createToys()
を呼び出します唯一の方法になると仮定すると
Animal.prototype.createToys = function() {
...
...
...
}
何が良いのでしょうか、なぜですか? :)
に依存します。あなたのオブジェクトのインスタンスがcreateToysに直接アクセスできるようにしますか?またはgenerateToysを通過させたいのですか?あなたはgenerateToysの中にいるので、私はあなたが常にgenerateToysを通過するように推測していますので、関数はプライベートにする必要があります – yBrodsky
最も良い解決策は、動作するものです。あなたの最初の提案は 'createToys'をインスタンス上のプロパティにしないので、' this.createToys() 'の呼び出しは失敗します(つまり動作しません)。しかし、それを修正したとしても、 'generateToys'が呼び出されるたびに' createToys'を再作成する必要があるのはなぜですか?それは不要です(少なくともあなたの例があれば)。関数を一度定義する。あなたがそれを行う場所( 'prototype'、" class "の外の関数)は本当に重要ではありません。 –
Douglas Crockford、Function The Ultimate(https://www.youtube.com/watch?v=ya4UHuXNygM)の講演をご覧になることをお勧めしますが、これはオブジェクトの作成を扱うさまざまな方法を公開していますか? – Booster2ooo