Метод расширения прототипа Javascript

у меня есть прототип модели, где мне нужно включить следующие методы расширения в прототип:

String.prototype.startsWith = function(str){
    return (this.indexOf(str) === 0);
}

пример: [JS]

sample = function() {
    this.i;
}

sample.prototype = {
    get_data: function() {
        return this.i;
    }
}

в модели прототипа, как я могу использовать методы расширения или любой другой способ создания методов расширения в модели прототипа JS.

3 ответов


вызов нового метода в строке:

String.prototype.startsWith = function(str){
    return (this.indexOf(str) === 0);
}

должно быть так:

alert("foobar".startsWith("foo")); //alerts true

для вашего второго примера я предполагаю, что вам нужен конструктор, который устанавливает переменную-член "i":

function sample(i) { 
    this.i = i;     
}

sample.prototype.get_data = function() { return this.i; }

вы можете использовать это следующим образом:

var s = new sample(42);
alert(s.get_data()); //alerts 42

функции конструктора должны начинаться с заглавной буквы.

function Sample(i) { 
    this.i = i;     
}

var s = new Sample(42);

Не уверен, насколько это правильно, но попробуйте этот код. Это сработало в IE для меня.

добавить в файл JavaScript:

String.prototype.includes = function (str) {
    var returnValue = false;

    if(this.indexOf(str) != -1){

        returnValue = true;
    }

    return returnValue;
}