Friday, December 19, 2014

bind() method in JavaScript

bind() method - Hard binding

bind() method creates a new function that will have "this" set to the parameter passed to bind.
bind() method is used when we want "this" value to be predictable

function displayName() {
console.log(this.name);
}
var obj1 = {name: "Deepak"};
var obj2 = {name: "Chetan"};
var orig = displayName;
var displayName = function() {
orig.call(obj1);
};
displayName(); // "Deepak"
displayName.call(obj2); // "Deepak"
view raw gistfile1.js hosted with ❤ by GitHub
In the above program displayName() method always has obj1 as "this" value.

function bind2(fun, obj) {
return function() {
fun.call(obj);
};
}
function displayName() {
console.log(this.name);
}
var obj1 = {name: "Deepak"};
var obj2 = {name: "Chetan"};
var displayName = bind2(displayName, obj1);
displayName(); // "Deepak"
displayName.call(obj2); // "Deepak"
view raw gistfile1.js hosted with ❤ by GitHub
if(!Function.prototype.bind2) {
Function.prototype.bind2 = function(obj) {
var fun = this;
return function() {
fun.apply(obj, arguments);
};
};
}
function displayName(lastName) {
console.log(this.name + " " + lastName);
}
var obj1 = {name: "Deepak"};
var obj2 = {name: "Chetan"};
var displayName = displayName.bind2(obj1);
displayName("Sisodiya"); // "Deepak Sisodiya"
displayName.call(obj2, "Sisodiya"); // "Deepak Sisodiya"
view raw gistfile1.js hosted with ❤ by GitHub
function displayName(lastName) {
console.log(this.name + " " + lastName);
}
var obj1 = {name: "Deepak"};
var obj2 = {name: "Chetan"};
var displayName = displayName.bind(obj1);
displayName("Sisodiya"); // "Deepak Sisodiya"
displayName.call(obj2, "Sisodiya"); // "Deepak Sisodiya"
view raw gistfile1.js hosted with ❤ by GitHub

Link 1 - Hard binding
Link 2 - Hard binding
Link 3 - Hard binding
Link 4 - Hard binding

No comments:

Post a Comment