Javascript prototype extension method

8.9k views Asked by At

I have a prototype model where I need to include the following extension methods into the prototype:

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

Example: [JS]

sample = function() {
    this.i;
}

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

In the prototype model, how can I use the extension methods or any other way to create extension methods in JS prototype model.

3

There are 3 answers

2
Jonas Høgh On BEST ANSWER

Calling the new method on string:

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

should be as simple as:

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

For your second example, I assume you want a constructor that sets the member variable "i":

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

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

You can use this as follows:

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

Not sure how correct this is, but please try this code. It worked in IE for me.

Add in JavaScript file:

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

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

        returnValue = true;
    }

    return returnValue;
}
0
Alex On

Constructor functions should begin with a capital letter though.

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

var s = new Sample(42);