EN
JavaScript - how to use '.call(...)' method with (or instead) 'new' operator
5
points
In this article we would like to show how to create object with MyClass.call(...)
method instead of new
operator in JavaScript.
Simple solution:
// ONLINE-RUNNER:browser;
function MyClass(a, b) {
console.log(a + ' ' + b);
this.print = function(c, d) {
console.log(a + ' ' + b + ' -> ' + c + ' ' + d);
};
}
var object = { };
MyClass.call(object, 'a', 'b');
object.print('c', 'd');
Note: read this article to see
MyClass.apply(...)
method examples.
Check below alternative solutions:
Alternative solutions
There are few different ways how to achieve same effect, what was presenbted in this section.
new
operator with .bind.call(...)
methods example
// ONLINE-RUNNER:browser;
function MyClass(a, b) {
console.log(a + ' ' + b);
this.print = function(c, d) {
console.log(a + ' ' + b + ' -> ' + c + ' ' + d);
};
}
var object = new (MyClass.bind.call(MyClass, null, 'a', 'b'));
object.print('c', 'd');
new
operator, .bind.call(...)
methods with Function
class example
// ONLINE-RUNNER:browser;
function MyClass(a, b) {
console.log(a + ' ' + b);
this.print = function(c, d) {
console.log(a + ' ' + b + ' -> ' + c + ' ' + d);
};
}
var object = new (Function.prototype.bind.call(MyClass, null, 'a', 'b'));
object.print('c', 'd');