我需要扩展一个字符串编写器函数,它包含标题和正文。在整个“字符串”被渲染之前,主体可以有多个附加行。然后引用一个新对象。我的问题在于,当我调用原型的子函数时,主体无法访问整体功能。我必须错过一些简单的想法。由于原型函数中的Javascript子函数
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');' –