Метод расширения прототипа Javascript
-
05-07-2019 - |
Вопрос
У меня есть прототип модели, где мне нужно включить в прототип следующие методы расширения:
String.prototype.startsWith = function(str){
return (this.indexOf(str) === 0);
}
Пример:[ДЖС]
sample = function() {
this.i;
}
sample.prototype = {
get_data: function() {
return this.i;
}
}
В модели прототипа, как я могу использовать методы расширения или любой другой способ для создания методов расширения в модели прототипа JS.
Решение
Вызов нового метода в строке:
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;
}
Не связан с StackOverflow