Ich muss eine String-Writer-Funktion, die eine Überschrift und Körper enthält erweitern. Der Körper kann mehrere angehängte Linien haben, bevor die gesamte "Zeichenkette" gerendert wird. Dann wird auf ein neues Objekt verwiesen. Mein Problem hier ist, dass, wenn ich die Unterfunktion des Prototyps anrufe, der Körper für die übergreifende Funktion nicht zugänglich ist. Ich muss etwas Einfaches vermissen .... Gedanken? DankJavascript Sub-Funktion in einer Prototyp-Funktion
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());
Kontext Problem. 'this' in' add' verweist auf den neuen Kontext des 'Item' Konstruktors. Um add mit 'Primary'-Kontext aufzurufen, müssen Sie' call' oder 'bind' oder' apply' verwenden, um den Kontext extern festzulegen. zB: 'privalue.add.call (Primary, 'bob', 'smith');' –