Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript prototype extension method

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.

like image 323
Santhosh Avatar asked Sep 11 '09 09:09

Santhosh


2 Answers

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
like image 87
Jonas Høgh Avatar answered Sep 17 '22 20:09

Jonas Høgh


Constructor functions should begin with a capital letter though.

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

var s = new Sample(42);
like image 43
Alex Avatar answered Sep 20 '22 20:09

Alex