Languages
[Edit]
EN

JavaScript - how to use '.apply(...)' method with (or instead) 'new' operator

4 points
Created by:
Shri
8550

In this article we would like to show how to create object with MyClass.apply(...) method instead of new operator in JavaScript.

Simple solution for modern JavaScript:

const parameters = ['a', 'b'];
const object = new MyClass(...parameters);

Simple solution for older JavaScript:

// 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.apply(object, ['a', 'b']);

object.print('c', 'd');

Note: read this article to see MyClass.call(...) 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 spread syntax (...) example

In modern JavaScript, the following approach is mostly correct.

// ONLINE-RUNNER:browser;

class MyClass {
    constructor(a, b) {
      	this.a = a;
      	this.b = b;
	    console.log(a + ' ' + b);
    }
	print(c, d) {
		console.log(this.a + ' ' + this.b + ' -> ' + c + ' ' + d);
	}
}

const parameters = ['a', 'b'];
const object = new MyClass(...parameters);

object.print('c', 'd');

new operator with .bind.apply(...) 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.apply(MyClass, [null, 'a', 'b']));
object.print('c', 'd');

new operator, .bind.apply(...) 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.apply(MyClass, [null, 'a', 'b']));
object.print('c', 'd');
Donate to Dirask
Our content is created by volunteers - like Wikipedia. If you think, the things we do are good, donate us. Thanks!
Join to our subscribers to be up to date with content, news and offers.
Native Advertising
🚀
Get your tech brand or product in front of software developers.
For more information Contact us
Dirask - we help you to
solve coding problems.
Ask question.

❤️💻 🙂

Join