我们有一个连接字符串的假设函数:
function Concatenator(){
//Initializes the concatenator
this.delimiter = "-"
}
Concatenator.prototype = {
main_functionality: {
concatenate: function(array){
return array.join(this.delimiter)
}
}
}
必须先进行初始化(这是一个带异步内容的复杂过程)。然后我们可以在原型中调用方法。 但是,原型中的方法引用了在init阶段创建的东西,比如this.delimiter。
//test it out
myArray = ['one', 'two', 'three'];
c = new Concatenator();
alert(c.main_functionality.concatenate(myArray));
见jsfiddle:https://jsfiddle.net/6j5rgjn3/
正如你在jsfiddle中看到的那样,它可以调用方法OK但是分隔符不可用 - 它应该显示one-two-three
,而是显示“一,二,三”。
问题:c.main_functionality.concatenate如何引用this.delimiter?
我试过了:
1)调用this.delimiter而不是this.prototype.delimiter,但它不起作用:
function Concatenator(){
//Initializes the concatenator
this.prototype = {}
this.prototype.delimiter = "-"
}
Concatenator.prototype.main_functionality = {
concatenate: function(array){
return array.join(this.delimiter)
}
}
2)连接后使用.bind(this) - 没有效果。
有什么想法吗?