How JS this works, constructor function and prototype

Use call or apply to force the meaning of this to be whatever you want it to be. Also

by queryj

JavaScript

var person = {
    fn : "Boa",
    ln: "Snake",
    greet: function(){
      console.log("Hi, " + this.fn);
    }
};

var SayIt = person.greet;

SayIt();  //Hi, undefined
SayIt.call(person); // Hi, Boa
SayIt.apply(person); // Hi, Boa

var persona = {
    fn : "Boa",
    ln: "Snake",
    greet: function(greeting, punc){
      console.log(greeting + ", " + "Hi, " + this.fn + punc);
    }
};

var ShuoTa = persona.greet;
ShuoTa.call(person, "Welcome", "!!@K@");
ShuoTa.apply(person, ["Welcome", "!!dddads@K@"]);



function Planet(name, star)
{
    this.name = name;
    this.star = star;
    this.orbit = function(){
       console.log(name + " orbits around " + star);
    }
}

var earth = new Planet("earth", "sun");
earth.orbit();

Planet.prototype.GetDailyHours = function(){
    return 24;
}

console.log("HOURS: " + earth.GetDailyHours());