Javascript:在嵌套原型

时间:2015-09-02 20:12:49

标签: javascript inheritance prototype this

我们有一个连接字符串的假设函数:

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) - 没有效果。

有什么想法吗?

0 个答案:

没有答案