Why does creating objects with constructor execute object's method in javascript? -


suppose want have 3 objects of type room. 3 objects bedroom, livingroom , bathroom. room has 2 properties length , breadth, , 1 method myfunc. use constructor method create 3 required objects as:

function room(len, bred, myfunc) {         this.len = 5;         this.bred = 8;           this.myfunc =  alert(); }      var bedroom = new room();     var livingroom = new room();      var bathroom = new room(); 

the problem when run script myfunc gets executed 3 times displaying alert. thought since new keyword converts function object must not execute object's method -- typeof new room returns "object".

my question is:

  • if statement new room(); converts copy of room() function object isn't equvalent object creation literal notation? if yes shouldn't var bedroom = new room(); assign properties of room object bedroom object? why execute objects method?

  • how create objects without executing methods?

alert function , alert() executes it. has nothing how objects created.

keep in mind alert needs wrapped because written in native code foreign javascript.

so should (with clickable example):

function room(len, bred, myfunc) {    this.len = 5;    this.bred = 8;    this.myfunc = function(x) {      alert(x)    };  }    var bedroom = new room();  var livingroom = new room();  var bathroom = new room();    bedroom.myfunc('this bedroom.');


edit:

the main reason alert expects this bound window. meaning following work:

this.myfunc = alert.bind(window);

function room(len, bred, myfunc) {    this.len = 5;    this.bred = 8;    this.myfunc = alert.bind(window);  }    var bedroom = new room();  var livingroom = new room();  var bathroom = new room();    bedroom.myfunc('this bedroom.');


Comments

Popular posts from this blog

Ansible - ERROR! the field 'hosts' is required but was not set -

customize file_field button ruby on rails -

SoapUI on windows 10 - high DPI/4K scaling issue -