オブジェクトのプロトタイプを別のオブジェクトで公開する方法はありますか?このコードでオブジェクトのプロトタイプを公開する
var foo = function() {
var foo = {
bar: bar,
boo: boo
}
return foo;
function bar (age) {
this.age = age;
}
bar.prototype.shoutAge = function() {
alert('My age is ' + this.age);
}
function boo (age) {
this.age = age;
boo.prototype.shoutAge = function() {
alert('My age is ' + this.age);
}
}
}
var foo = foo();
var far = new foo.bar(13); // bar {age: 13}
far.shoutAge(); // far.shoutAge is not a function
var far = new foo.boo(13); // boo {age: 13} with __proto__
far.shoutAge(); // alert('My age is 13');
、「バー」オブジェクトは、プロトタイプの継承を使用して設定されている - が、バーを露出する「shoutAge」の継承を失います。
しかし、「ブー」目的は、プロトタイプがそれの内で宣言と外部関数、メソッド「shoutAge」にアクセスすることがあります。
後者は、機能してもベストプラクティスではないと思います。では、ここでベストプラクティスは何でしょうか?
私は「バー」のインスタンスの数百人が潜在的に存在している場合は特に、「バー」の各インスタンスは、それが自分の「shoutAge」方法だ持っている必要はありません。通常、別のオブジェクトを'bar'の代わりに作成し、'foo'に公開するのではなく、私はbar.prototype
割り当てがあなたのコードで実行されることはありませんので、これがあると思い
var Foo = function() {
function bar (age) {
this.age = age;
}
bar.prototype.shoutAge = function() {
alert('My age is ' + this.age);
}
var foo = {
bar: bar,
boo: boo
}
return foo;
}
:これはちょうどオーダー・オブ・オペレーションの問題であるように
ここで継承はどこですか? 'bar'と' boo'のどちらも 'foo'を継承しません。 –
'far'は' bar.prototype'または 'boo.prototype'から継承します – Oriol
あなたのプログラムをlintingしてみてください。 –