Метод расширения прототипа Javascript - PullRequest
6 голосов
/ 11 сентября 2009

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

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 ]

13 голосов
/ 11 сентября 2009

Вызов нового метода для строки:

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
1 голос
/ 11 сентября 2009

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

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

var s = new Sample(42);
0 голосов
/ 06 июля 2017

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

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

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

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

        returnValue = true;
    }

    return returnValue;
}
...