The 'new' keyword - Object Creation in JavaScript

youtube - new ํ‚ค์›Œ๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ์˜์ƒ์ด๋‹ค.

function Person(saying) {
  this.saying = saying,
  /* return {
    dumbObject: true;
  } */
}

Person.prototype.talk = function() {
  cosole.log('I say:', this.saying);
};

function spawn(constructor) {
  var obj = {};
  Object.setPrototypeOf(obj, constructor.prototype);
  var argsArray = Array.prototype.slice.apply(arguments);
  return consturctor.apply(obj, argsArray.slice(1)) : obj;
}

var crockford = new Person('SEMICOLAMS!!!1one1');
crokford.talk();

key point

Object.setPrototypeOf(obj, constructor.prototype);

obj์•ˆ์— ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ์ฒด์˜ prototype์„ ํ• ๋‹น ํ•˜์˜€๋‹ค.

return consturctor.apply(obj, argsArray.slice(1)) : obj;

return์ด ๋‘๊ฐ€์ง€์ธ ์ด์œ ๋Š” Person์•ˆ์— return ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์™€ ์—†๋Š” ๊ฒฝ์šฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋งŒ์•ฝ return์ด ์žˆ๋Š”๊ฒฝ์šฐ๋ฉด crokford.talk(); ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. obj๋ฅผ ๋ฆฌํ„ดํ•œ๊ฒŒ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. newํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์‹ค์ œ ๋™์ผํ•˜๋‹ค.

Last updated

Was this helpful?