๐Ÿ“– [JavaScript] ์ƒ์†, ํ”„๋กœํ† ํƒ€์ž…

ํ˜ฑยท2022๋…„ 9์›” 10์ผ

JavaScript_Intermediate

๋ชฉ๋ก ๋ณด๊ธฐ
15/19

๐Ÿ“Œ obj.hasOwnProperty(key)

๊ฐ์ฒด์— ํ•ด๋‹น property๊ฐ€ ์žˆ๋Š” ์ง€ ํ™•์ธํ•˜๋Š” ์ž‘์—…
๋ถˆ๋ฆฐํ˜•์œผ๋กœ ์•Œ๋ ค์คŒ
proto: Object => ํ”„๋กœํ† ํƒ€์ž…
๊ฐ์ฒด์—์„œ ๊ทธ property๊ฐ€ ์žˆ์œผ๋ฉด, ํƒ์ƒ‰์„ ๋ฉˆ์ถ”๊ณ ,
์—†์œผ๋ฉด ์œ„์— ๋‚˜ํƒ€๋‚œ prototype์—์„œ property๋ฅผ ์ฐพ์Œ.

๐Ÿ“Œ ์ƒ์†

๊ณตํ†ต๋œ ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•  ๋•Œ proty๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ

const car = {
  wheels:4,
  drive() {
    console.log("drive..");
  },
};

const bmw = {
  color: "red",
  navigation:1,
};

const benz = {
  color: "black",
};

const audi={
  color: "blue",
};

bmw.__proto__= car; //bmw๋ฅผ car์˜ ์ƒ์†์„ ๋ฐ›๋Š” ๊ฒƒ(proty๋ฅผ ๋ฐ›์Œ)
benz.__proto__= car;
audi.__proto__= car;

bmw.color //red
bmw.wheels; //4 -> bmw์—์„œ ์ฐพ๊ณ  ์—†์œผ๋ฉด prototype์—์„œ ์ฐพ์•„๋ƒ„. 

const x5 = {
  color: "white",
  name: "x5",
};

x5.__proto__=bmw;  //x5๊ฐ€ bmw๋ฅผ ์ƒ์†๋ฐ›์€ ๊ฒƒ. 

์ถœ์ฒ˜: ์ฝ”๋”ฉ์•™๋งˆ

๐Ÿ”— ์ƒ์„ฑ์žํ•จ์ˆ˜ ์ด์šฉํ•ด๋ณด๊ธฐ

const Bmw = function (color) {
  this.color = color;
};

Bmw.prototype.wheels=4;
Bmw.prototype.drive = function () {
  console.log('drive..');
};
//์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๊ฐ์ฒด์— __proto__๋ฅผ .prototype์œผ๋กœ ์„ค์ •ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž„

const x5 = new Bmw('red');
const z4 = new Bmw('blue');
//ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ์ผ์ผํžˆ ํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋จ! 

๐Ÿ“Œ instanceof

์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ๋‚ผ ๋•Œ, ๊ทธ ๊ฐ์ฒด๋Š” ์ƒˆ๋กœ์šด ๊ฐ์ฒด์˜ instace๋ผ๊ณ  ํ•จ
๊ฐ์ฒด์™€ ์ƒ์„ฑ์ž๋ฅผ ๋น„๊ต, ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ๊ทธ ์ƒ์„ฑ์ž๋กœ๋ถ€ํ„ฐ ๋‚˜์˜จ ๊ฑด์ง€ ํ™•์ธํ•ด์„œ
true, false๋ฅผ ๋ฐ˜ํ™˜ํ•จ.

๐Ÿ”—

const Bmw = function (color) {
  this.color = color;
};

Bmw.prototype.wheels=4;
Bmw.prototype.drive = function () {
  console.log('drive..');
};
Bmw.prototype.navigation=1;
Bmw.prototype.stop=function() {
  console.log('stop!');
};

const x5 = new Bmw('red');
const z4 = new Bmw('blue');

z4 instaceof Bmw //true
z4.constructor == Bmw; //true


>>๐Ÿ”— ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฐ‘์—์™€ ๊ฐ™์ด ํ•ด๋„ ๋จ!
Bmw.prototype = {
  wheels:4,
  drive() {
    console.log("drive...");
  },
  navigation:1,
  stop(){ console.log('stop!');
  },    
};

const x5 = new Bmw('red');
const z4 = new Bmw('blue');

z4.constructor == Bmw; //false 
>>โœ”๏ธ๊ทธ๋Ÿฌ๋‚˜ constructor์€ false๊ฐ€ ๋‚˜์˜ด
๋”ฐ๋ผ์„œ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒŒ ๋” ๋‚˜์„ ์ˆ˜๋„,
  ํ˜น์€
๐Ÿ”—
Bmw.prototype = {
  **constructor: Bmw,** //์ด๋ ‡๊ฒŒ ์ˆ˜๋™์œผ๋กœ ๋ช…์‹œํ•ด์ค˜๋„ ๋จ! 
  wheels:4,
  drive() {
    console.log("drive...");
  },
  navigation:1,
  stop(){ console.log('stop!');
  },    
};

z4.constructor == Bmw; //true 

๐Ÿ”—
const Bmw=function (color){
  const c = color;
  this.getColor=function() {
    console.log(c);
  };
};

const x5=new Bmw('red');
>์ด๋•Œ๋Š” ์ƒ‰์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Œ,
  ์ƒ์„ฑ๋  ๋‹น์‹œ์˜ context๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ๊ฒƒ! 
profile
new blog: https://hae0-02ni.tistory.com/

0๊ฐœ์˜ ๋Œ“๊ธ€