見出しと本文を格納する文字列ライター関数を拡張する必要があります。本文には、文字列全体がレンダリングされる前に複数の行が追加されている場合があります。次に、新しいオブジェクトが参照されます。ここでの問題は、プロトタイプのサブ関数を呼び出すと、ボディが関数全体にアクセスできないということです。私は単純な何かを見逃している必要があります....考え?おかげPrototype関数のJavascript Sub関数
https://jsfiddle.net/hitman1733/n2od4s6s/
var StringBuilder = function() {
this.Heading;
this.Body;
}
StringBuilder.prototype.Heading = function(text){
this.Heading = text + '\n';
}
StringBuilder.prototype.Item = function()
{
this.add = function(field, text) {
this.Body = ' ' + field +': ' + text + '\n';
}
}
StringBuilder.prototype.Append = function() {
return this.Heading + '\n' + this.Body;
}
var Primary = new StringBuilder();
Primary.Heading = 'My Heading';
var privalue = new Primary.Item();
privalue.add('bob', 'smith');
privalue.add('sally', 'smith');
console.log(Primary.Append());
文脈の問題があります。 'add'の' this'は 'Item'コンストラクタの新しいコンテキストを参照しています。 'Primary'コンテキストでaddを呼び出すには、コンテキストを外部に設定するために' call'か 'bind'か' apply'を使う必要があります。 'privalue.add.call(Primary、 'bob'、 'smith');' –