JavaScriptë ê°ë¨í ê°ì²´ ê¸°ë° í¨ë¬ë¤ì ìì ë§ë¤ì´ì¡ìµëë¤. ê°ì²´ë ìì±ì 컬ë ì ì´ê³ , ìì±ì ì´ë¦('í¤')ê³¼ ê° ì¬ì´ì ì°ê²° ê´ê³ì ëë¤. ìì±ì ê°ì´ í¨ìì¸ ê²½ì°ìë ë©ìëë¼ê³ ë¶ë¦ ëë¤. ë¸ë¼ì°ì ìì 미리 ì ìë ê°ì²´ ë¿ë§ ìëë¼ ì¬ë¬ë¶ì´ ì§ì ê°ì²´ë¥¼ ì ìí ìë ììµëë¤. ì´ë² ì¥ììë ê°ì²´, ìì±, í¨ì, ë©ìë ì¬ì©ë²ê³¼ í¨ê» ì§ì ìë¡ì´ ê°ì²´ë¥¼ ìì±íë ë²ì ììë´ ëë¤.
ê°ì²´ ê°ìJavaScriptì ê°ì²´ë, ë¤ë¥¸ íë¡ê·¸ëë° ì¸ì´ììì ë§ì°¬ê°ì§ë¡ íì¤ ì¸ê³ìì ê°ì²´(ì¬ë¬¼)ë¼ê³ ë¶ë¥´ë ê²ê³¼ ë¹êµí ì ììµëë¤. JavaScript ê°ì²´ì ê°ë ì íì¤ìì ì¸ì ê°ë¥í ì¬ë¬¼ë¡ ì´í´ê° ê°ë¥í©ëë¤.
JavaScriptìì ê°ì²´ë ìì±ê³¼ íì ì ê°ì§ ë 립ì ì¸ ê°ì²´(entity)ì ëë¤. íì¤ì 컵과 ë¹êµí´ë³¸ë¤ë©´, 컵ì ì, ëìì¸, 무ê², ìì¬ ë±ì ìì±ì ê°ì§ ê°ì²´ë¼ê³ í ì ììµëë¤. ë§ì°¬ê°ì§ë¡ JavaScript ê°ì²´ ìì í¹ì§ì ê²°ì ì§ë ìì±ì ê°ì§ ì ììµëë¤.
ê°ì²´ì ìì±JavaScript ê°ì²´ë ìì ê³¼ ì°ê´ë ìì±ë¤ì ê°ì§ëë¤. ê°ì²´ì ìì±ì ê°ì²´ì ë¶ì ë³ìë¼ê³ ì¤ëª í ì ìê² ìµëë¤. ê°ì²´ì ìì±ì ì¼ë°ì ì¸ JavaScript ë³ìì ëê°ìë°, ë¤ë§ ê°ì²´ì ë¶ì´ìë¤ë ì ë§ ë¤ë¦ ëë¤. ìì±ì ì ê·¼í ë ê°ë¨í ë§ì¹¨í í기ë²ì ì¬ì©í©ëë¤.
ë¤ë¥¸ 모ë JavaScript ë³ìì ë§ì°¬ê°ì§ë¡, ê°ì²´ì ì´ë¦(ìë§ë ê·¸ë¥ ë³ì)ê³¼ ìì±ì ì´ë¦ 모ë ëì문ì를 구ë³í©ëë¤. ê°ì²´ì ìì±ì ì ìíë ¤ë©´ ê°ì í ë¹íì¸ì. ì를 ë¤ê¸° ìí´ myCar
ë¼ë ê°ì²´ë¥¼ ìì±íê³ , make
, model
, year
ë¼ë ì´ë¦ì ìì±ì ì¶ê°í´ë³´ê² ìµëë¤.
const myCar = new Object();
myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;
ìì ì½ëë, ì¤ê´í¸({}
) ìì ì¼íë¡ êµ¬ë¶í ìì± ì´ë¦ê³¼ ê°ì 목ë¡ì¼ë¡ ëíë´ë ê°ì²´ ì´ê¸°ìë¡ ëíë¼ ìë ììµëë¤.
const myCar = {
make: "Ford",
model: "Mustang",
year: 1969,
};
ê°ì²´ì í ë¹ëì§ ìì ìì±ìundefined
ì
ëë¤. (null
ì´ ìëëë¤)
myCar.color; // undefined
JavaScriptì ê°ì²´ ìì±ì ëê´í¸ í기ë²(ìì± ì ê·¼ì)ì ì¬ì©í´ ì ê·¼í ìë ììµëë¤. ê°ì²´ë¥¼ ëëë¡ 'ì°ê´ ë°°ì´'(associative array)ì´ë¼ê³ ë¶ë¥´ê¸°ë íëë°, ìì±ì ìì ì ì ê·¼í ì ìë 문ìì´ ê°ê³¼ ì°ê´ëì´ ì기 ë문ì
ëë¤. ê·¸ë¬ë¯ë¡ myCar
ê°ì²´ì ìì±ì ìëì ê°ì´ ì ê·¼í ìë ìì ê²ì
ëë¤.
myCar["make"] = "Ford";
myCar["model"] = "Mustang";
myCar["year"] = 1969;
ê°ì²´ ìì± ì´ë¦ì ì í¨í JavaScript 문ìì´ í¹ì 문ìì´ë¡ ë³í ê°ë¥í ê²ì´ë©´ 모ë ê°ë¥íë©°, ë¹ ë¬¸ìì´ë ì¬ê¸° í¬í¨ë©ëë¤. ê·¸ë¬ë ì í¨í JavaScript ìë³ìê° ìë ì´ë¦(공백ì´ë ë¶ìí, ì«ìë¡ ììíë ì´ë¦)ì ê°ì§ ìì±ì ëê´í¸ í기ë²ì¼ë¡ë§ ì ê·¼í ì ììµëë¤. ëê´í¸ í기ë²ì ìì± ì´ë¦ì´ ëì ì¼ë¡ ì í´ì§ë ê²½ì°, ì¦ ë°íì ìì ê¹ì§ ì ì ìë ê²½ì° ì ì©í©ëë¤. ìë ìì 를 ì´í´ë³´ì¸ì.
// ë¤ ê°ì ë³ì를 ì¼íë¡ êµ¬ë¶í´ì
// í ë²ì ìì±íê³ í ë¹
const myObj = new Object(),
str = "myString",
rand = Math.random(),
obj = new Object();
myObj.type = "ë§ì¹¨í 구문";
myObj["date created"] = "공백ì í¬í¨í 문ìì´";
myObj[str] = "문ìì´ ê°";
myObj[rand] = "무ìì ì";
myObj[obj] = "ê°ì²´";
myObj[""] = "ë¹ ë¬¸ìì´ê¹ì§";
console.log(myObj);
모ë ëê´í¸ íê¸°ë² ìì í¤ë ì¬ë³¼ì´ ìë ê²½ì° ë¬¸ìì´ë¡ ë³íëë ì ì 기ìµíì¸ì. JavaScript ê°ì²´ì ìì± ì´ë¦(í¤)ì 문ìì´ì´ë ì¬ë³¼ ë¿ì´ê¸° ë문ì
ëë¤(í´ëì¤ íë ì ììë¡ ì¸í´ ë¹ê³µê° ìì± ì´ë¦ë ì¶ê°ëê² ì§ë§, ë¹ê³µê° ìì± ì ê·¼ìë []
íìì ì¬ì©íì§ ìì ê²ì
ëë¤). ì를 ë¤ì´, ì ì½ëì myObj
ì obj
를 í¤ë¡ ì¶ê°íë ë¶ë¶ìì JavaScriptë obj.toString()
ë©ìë를 í¸ì¶í ê²°ê³¼ 문ìì´ì ìë¡ì´ í¤ë¡ ì¬ì©í©ëë¤.
ìì± ì ê·¼ì ë³ìì ì ì¥ë 문ìì´ ê°ì¼ë¡ë ê°ë¥í©ëë¤.
let propertyName = "make";
myCar[propertyName] = "Ford";
propertyName = "model";
myCar[propertyName] = "Mustang";
ëê´í¸ í기ë²ì for...in
ê³¼ í¨ê» ê°ì²´ì ì´ê±° ê°ë¥í ìì±ì ìíí ëë ì¬ì©í ì ììµëë¤. ìë í¨ìë ì´ ë°©ë²ì ëì ë°©ìì ë³´ì´ë ìì ë¡, ê°ì²´ì ê°ì²´ ì´ë¦ì 매ê°ë³ìë¡ ì ê³µíë©´ ê°ì²´ì ìì±ë¤ì ì¶ë ¥í©ëë¤.
function showProps(obj, objName) {
let result = "";
for (let i in obj) {
// obj.hasOwnProperty()를 ì¬ì©í´ì ê°ì²´ì íë¡í íì
ì²´ì¸ì ì¡´ì¬íì§ ìë ìì±ì ì ì¸
if (obj.hasOwnProperty(i)) {
result += `${objName}.${i} = ${obj[i]}\n`;
}
}
console.log(result);
}
showProps(myCar, 'myCar')
를 í¸ì¶íë©´ ì´ë ê² ì¶ë ¥ë©ëë¤.
myCar.make = Ford myCar.model = Mustang myCar.year = 1969ê°ì²´ ìì± ëì´í기
ê°ì²´ ìì±ì ëì´íê±°ë ìííë ë°©ë²ìë ì¸ ê°ì§ ë´ì¥ë ë°©ë²ì´ ììµëë¤.
Object.keys(o)
. ì´ ë°©ë²ì o
ê°ì²´ ìì ë§ì(íë¡í íì
ì²´ì¸ì ì ì¸í) ì´ê±° ê°ë¥í ìì± ì´ë¦("í¤")ì ë°°ì´ë¡ ë°íí©ëë¤.Object.getOwnPropertyNames(o)
. ì´ ë°©ë²ì o
ê°ì²´ ìì ë§ì 모ë (ì´ê±° ë¶ê°ë¥íëë¼ë) ìì± ì´ë¦("í¤")ì ë°°ì´ë¡ ë°íí©ëë¤.'ì¨ì' ìì±(íë¡í íì ì²´ì¸ ìì ìì± ì¤, ê°ì ì´ë¦ì ìì±ì´ ì²´ì¸ìì ìì ì¡´ì¬í´ì ê°ë ¤ì§ ìì±)ì ëì´íë ë´ì¥ ë°©ë²ì ììµëë¤. ê·¸ë¬ë ë°ì í¨ì를 ì¬ì©íë©´ ê°ë¥í©ëë¤.
function listAllProperties(o) {
let objectToInspect = o;
let result = [];
while (objectToInspect !== null) {
result = result.concat(Object.getOwnPropertyNames(objectToInspect));
objectToInspect = Object.getPrototypeOf(objectToInspect);
}
return result;
}
ê°ì²´ ìì±í기
JavaScriptìë 미리 ì ìë ê°ì²´ê° ì¬ë¿ ì¡´ì¬í©ëë¤. ì¬ê¸°ì ëí´ ì¬ë¬ë¶ë§ì ê°ì²´ë ìì±í ì ììµëë¤. ê°ì²´ ìì±ìë ê°ì²´ ì´ê¸°ì를 ì¬ì©í ìë ìê³ , ìì±ì í¨ì를 ì ìí íì new
ì°ì°ìì í¨ê» í¸ì¶í´ì ê°ì²´ ì¸ì¤í´ì¤ë¥¼ ìì±í ìë ììµëë¤.
ê°ì²´ ì´ê¸°ìì ì¬ì©ì ì¢ ì¢ "리í°ë´ í기ì ìí ê°ì²´ ìì±"ì´ë¼ê³ ë¶ë¦½ëë¤. "ê°ì²´ ì´ê¸°ì"(Object initializer)ë¼ë ë¨ì´ë C++ìì ì¬ì©íë ì©ì´ì ê°ìµëë¤.
ê°ì²´ ì´ê¸°ì를 ì¬ì©í ê°ì²´ ìì± êµ¬ë¬¸ì ë¤ìê³¼ ê°ìµëë¤.
const obj = {
property_1: value_1, // ìì±ì ê°ì ìë³ìì¼ ìë ìê³
2: value_2, // ì«ìì¼ ìë ìê³
// ...,
"property n": value_n, // 문ìì´ì¼ ìë ìì
};
ì ì½ëìì obj
ë ìë¡ì´ ê°ì²´ì ì´ë¦ì´ê³ , ì½ë¡ ìì ìì¹í ìì± ì´ë¦ì ìë³ì(ì´ë¦, ì«ì, ì¤í¸ë§ 리í°ë´), ê°ê°ì value_i
ë ìì± ì´ë¦ì í ë¹í ííìì
ëë¤. obj
ì í ë¹ êµ¬ë¬¸ì ì í ì¬íì¼ë¡, ì´ ê°ì²´ë¥¼ ë¤ë¥¸ ê³³ìì 참조íì§ ììë ëë©´ ë³ìì í ë¹í íìë ììµëë¤. (ëª
ë ¹ë¬¸ì 기ëíë ê³³ì ê°ì²´ 리í°ë´ì ë°°ì¹íë ¤ë©´ ë¸ë¡ ì ì¸ë¬¸ì¼ë¡ ì못 ì½ë ê²½ì°ê° ìëë¡ ê´í¸ë¡ ê°ì¸ì¤ íìê° ììµëë¤)
ê°ì²´ ì´ê¸°ìë ííìì´ë©° ìì ì´ ìí ì ì¸ë¬¸ì´ ì¤íë ëë§ë¤ ìë¡ì´ ê°ì²´ë¥¼ ìì±í©ëë¤. ê°ì ì´ê¸°ìê° ìì±í ê°ì²´ë¼ë¦¬ë¼ë êµ¬ë³ ê°ë¥íë©° ìë¡ ë¹êµíì ë ê±°ì§ì ë°íí©ëë¤. ì´ê¸°ìê° ìì±íë ê°ì²´ë ë§ì¹ new Object()
í¸ì¶ì í ê²ê³¼ ê°ì´ ìì±ë©ëë¤. ì¦ ê°ì²´ ì´ê¸°ì ííìì ê²°ê³¼ ê°ì²´ë¤ì Object
ì ì¸ì¤í´ì¤ì
ëë¤.
ë¤ì ì ì¸ë¬¸ì cond
ê° ì°¸ì¼ ëë§ ê°ì²´ë¥¼ ìì±í´ì ë³ì x
ì í ë¹í©ëë¤.
let x;
if (cond) {
x = { greeting: "ìë
íì¸ì" };
}
ë¤ì ìì ë myHonda
를 ì¸ ê°ì ìì±ê³¼ í¨ê» ìì±í©ëë¤. engine
ìì± ìì ìì ë§ì ìì±ì ê°ì§ ê°ì²´ìì 주목íì¸ì.
const myHonda = {
color: "red",
wheels: 4,
engine: { cylinders: 4, size: 2.2 },
};
ê°ì²´ ì´ê¸°ìë¡ ë°°ì´ì ìì±í ìë ììµëë¤. ë°°ì´ ë¦¬í°ë´ì ì°¸ê³ íì¸ì.
ìì±ì í¨ì ì¬ì©í기ë¤ë¥¸ ë°©ë²ì¼ë¡, ë¤ìì ë ë¨ê³ë¥¼ íµí´ ê°ì²´ë¥¼ ìì±í ì ììµëë¤.
new
ì°ì°ì를 ì¬ì©í´ ê°ì²´ ì¸ì¤í´ì¤ë¥¼ ìì±í©ëë¤.ê°ì²´ íì
ì ì ìíë ¤ë©´ íì
ì´ë¦, ìì±, ë©ìë를 ì§ì íë í¨ì를 ìì±íì¸ì. ì를 ë¤ì´ ì°¨ëì ííí기 ìí ê°ì²´ íì
ì ì ìíë¤ê³ í©ìë¤. ê·¸ë¬ë©´ ê°ì²´ íì
ì ì´ë¦ì Car
ê° ë ê²ì´ê³ , ë¸ëëì 모ë¸, ì°ì ìì±ì´ íìí ê²ì
ëë¤.
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
í¨ìì ì ë¬í ê°ì ê°ì²´ ìì±ì¼ë¡ í ë¹í기 ìí´ this
를 ì¬ì©íë ê²ì 주목íì¸ì.
ì´ì mycar
ê°ì²´ë¥¼ ìì±í ì ììµëë¤.
var mycar = new Car("Eagle", "Talon TSi", 1993);
ì´ ì ì¸ë¬¸ì mycar
를 ìì±í í 매ê°ë³ìë¡ ì§ì í ê°ì ìì±ì í ë¹í©ëë¤. ì´í mycar.make
ë 문ìì´ "Eagle", mycar.year
ë ì ì 1993 ë±ì ê°ì§ê² ë©ëë¤.
new
를 ì¬ì©í í¸ì¶ë¡ ëª ê°ì Car
ê°ì²´ë¼ë ë§ë¤ ì ììµëë¤.
const kenscar = new Car("Nissan", "300ZX", 1992);
const vpgscar = new Car("Mazda", "Miata", 1990);
ê°ì²´ë ë¤ë¥¸ ê°ì²´ë ìì±ì¼ë¡ ê°ì§ ì ììµëë¤. Person
ì´ë¼ë ê°ì²´ë¥¼ ë¤ìê³¼ ê°ì´ ì ìíë¤ê³ íê² ìµëë¤.
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
ë ê°ì ìë¡ì´ Person
ê°ì²´ë ì¸ì¤í´ì¤í íë¤ê³ í©ìë¤.
const rand = new Person("Rand McKinnon", 33, "M");
const ken = new Person("Ken Jones", 39, "M");
ì´ì Car
ì ì ì를, Person
ê°ì²´ë¥¼ ê°ë owner
ìì±ì ì¶ê°íëë¡ ìì í ì ììµëë¤.
function Car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
ê·¸ íì, ìë¡ì´ ê°ì²´ ì¸ì¤í´ì¤ë¥¼ ìì±í ë ì´ë ê² í ì ììµëë¤.
const car1 = new Car("Eagle", "Talon TSi", 1993, rand);
const car2 = new Car("Nissan", "300ZX", 1992, ken);
문ìì´ ë¦¬í°ë´ì´ë ì ì ê°ì´ ìëë¼ ê°ì²´ rand
ì ken
ì ìì ì 매ê°ë³ìë¡ ì§ì íìì ë³¼ ì ììµëë¤. ì´ì car2
ì ìì ì ì´ë¦ì ìë ¤ë©´ ì´ë ê² ìì±ì ì ê·¼í©ëë¤.
ì´ë¯¸ ì ìë ê°ì²´ìë ìì±ì ì¶ê°í ì ììµëë¤. ì를 ë¤ì´,
ìì ì½ëë car1
ì color
ìì±ì ì¶ê°í í ê°ì¼ë¡ 'black'
ì í ë¹íê³ ììµëë¤. ê·¸ë¬ë ì´ ë°©ë²ì ë¤ë¥¸ ê°ì²´ì ìí¥ì ì£¼ì§ ììµëë¤. ê°ì íì
ì 모ë ê°ì²´ì ê°ì ì¶ê°íë ¤ë©´ Car
ê°ì²´ íì
ì ì ì를 ìì í´ì¼ í©ëë¤.
Object.create
ë©ìë ì¬ì©í기
Object.create()
ë©ìëë¡ ê°ì²´ë¥¼ ìì±í ìë ììµëë¤. ì´ ë©ìëë ìì±ì í¨ì ì ì ìì´ë ìì±í ê°ì²´ì íë¡í íì
ì ì§ì í ì ìì¼ë¯ë¡ ì ì©í ìë ììµëë¤.
// ë물 ìì±ê³¼ ë©ìë 캡ìí
const Animal = {
type: "무ì²ì¶ë물", // ìì± ê¸°ë³¸ ê°
displayType: function () {
// ë물 ì¢
ë¥ë¥¼ ì¶ë ¥í ë©ìë
console.log(this.type);
},
};
// animal1ì´ë¼ë ì´ë¦ì ë물 íì
ê°ì²´ ìì±
const animal1 = Object.create(Animal);
animal1.displayType(); // ì¶ë ¥: 무ì²ì¶ë물
// fishë¼ë ì´ë¦ì ë물 íì
ê°ì²´ ìì±
const fish = Object.create(Animal);
fish.type = "ë¬¼ê³ ê¸°";
fish.displayType(); // ì¶ë ¥: ë¬¼ê³ ê¸°
ìì
JavaScriptì 모ë ê°ì²´ë ì ì´ë íëì ë¤ë¥¸ ê°ì²´ë¥¼ ììí©ëë¤. ìì ëì ê°ì²´ë¥¼ íë¡í íì
ì´ë¼ê³ ë¶ë¥´ê³ , ììí ìì±ì ìì±ìì prototype
ê°ì²´ìì ì°¾ì ì ììµëë¤. ììê³¼ íë¡í íì
ì²´ì¸ìì ìì¸í ììë³´ì¸ì.
ê°ì²´ì ìì±ì ì ê·¼í ë ìì± ì´ë¦ì´ë ì¸ë±ì¤ë¡ ì ê·¼í ì ììµëë¤. ì²ìì ìì±ì ì´ë¦ì¼ë¡ ì ìíì¼ë©´ ê·¸ ìì±ì íì ì´ë¦ì¼ë¡ë§ 참조í´ì¼ íê³ , ì²ìì ì¸ë±ì¤ë¡ ì ìíì¼ë©´ íì ì¸ë±ì¤ë¡ë§ 참조í´ì¼ í©ëë¤.
ì´ ì íì (ììì Car
ê°ì²´ íì
ì¼ë¡ íë ê²ê³¼ ê°ì´) ìì±ì í¨ìë¡ ê°ì²´ì ìì±ì ìì±í ë, ê·¸ë¦¬ê³ (myCar.color = 'red'
ì²ë¼) ê°ê°ì ìì±ì ëª
ìì ì¼ë¡ ì ìí ë 모ë í´ë¹ë©ëë¤. ë§ì½ ê°ì²´ì ìì±ì myCar[5] = '25 mpg'
ì²ë¼ ì¸ë±ì¤ë¡ ì ìíì¼ë©´ ì´íì 참조í ëë myCar[5]
ë¡ í´ì¼ í©ëë¤.
ë¤ë§ HTML ìì를 ëíë´ë, document.forms
ì ê°ì ì ì¬ ë°°ì´ ê°ì²´ìë ìì¸ë¡, 문ì ìì ìì를 ëíë´ë ì¸ë±ì¤ë¡ ì ê·¼í ìë ìê³ (ì ìë ê²½ì°) ì´ë¦ì¼ë¡ ì ê·¼í ìë ììµëë¤. ì¦ ë¬¸ìì ë ë²ì§¸ <form>
íê·¸ê° name="myForm"
í¹ì±ì ê°ì§ê³ ìë¤ë©´ document.forms[1]
, document.forms['myForm']
, document.forms.myForm
모ë ì¬ì©í ì ììµëë¤.
prototype
ìì±ì ì¬ì©íë©´ ì´ì ì ì ìë ê°ì²´ íì
ìë ìì±ì ì¶ê°í ì ììµëë¤. ì´ë ê² ì ìë ìì±ì í´ë¹ íì
ì 모ë ì¸ì¤í´ì¤ê° ê³µì í©ëë¤. ìë ì½ëë 모ë Car
íì
ê°ì²´ì color
ìì±ì ì¶ê°í í, car1
ê°ì²´ì ê·¸ ìì±ì ê°ì í ë¹íë 모ìµì
ëë¤.
Car.prototype.color = null;
car1.color = "black";
ììê³¼ íë¡í íì ì²´ì¸ìì ë ìì¸í ì 보를 ììë³´ì¸ì.
ë©ìë ì ìë©ìë(method)ë ê°ì²´ì ì°ê´ë í¨ì, ë¤ë¥¸ ë§ë¡ íìë©´ ê°ì²´ ìì± ì¤ í¨ìì¸ ê²ì ë§í©ëë¤. ë©ìëë ë¤ë¥¸ í¨ìì ëê°ì´ ì ìíì§ë§, ê°ì²´ ìì±ì í ë¹íë¤ë ì ì´ ë¤ë¦ ëë¤. ë©ìë ì ììì ë ìì¸í ì 보를 ììë³´ì¸ì. ë©ìëì ììë ë¤ìê³¼ ê°ìµëë¤.
objectName.methodName = functionName;
const myObj = {
myMethod: function(params) {
// ëê° í기...
}
// ì´ë ê²ë ëìí´ì
myOtherMethod(params) {
// ëê° ë¤ë¥¸ê±° í기...
}
};
objectName
ì ì´ë¯¸ ì¡´ì¬íë ê°ì²´, methodName
ì í ë¹íë ¤ë ë©ìë, functionname
ì í¨ìì ì´ë¦ì
ëë¤.
ê°ì²´ì ë§¥ë½ì¼ë¡ ë©ìë를 í¸ì¶íë ¤ë©´ ë¤ìê³¼ ê°ì´ ì¬ì©íì¸ì.
object.methodName(params);
ê°ì²´ ìì±ì í¨ìì ë©ìë ì ì를 í¬í¨íë©´ ë©ìë íì
ì ë©ìë를 ì ìí ì ììµëë¤. ììì ì ìíë Car
ê°ì²´ì ìì±ì ì 리í´ì ì¶ë ¥íë í¨ì를 ì ìí´ë´
ìë¤.
function displayCar() {
const result = `ìë¦ë¤ì´ ${this.year} ${this.make} ${this.model}`;
prettyPrint(result);
}
prettyPrint
ë ê°ë¡ 구ë¶ì ì ê·¸ë¦¬ê³ ë¬¸ìì´ì ì¶ë ¥íë í¨ìë¼ê³ ê°ì íê² ìµëë¤. this
를 ì¬ì©í´ì ë©ìëê° ìí ê°ì²´ë¥¼ 참조íë 모ìµì íì¸íì¸ì.
ì´ì ì´ í¨ìê° Car
ì ë©ìëê° ëë ¤ë©´ ê°ì²´ ì ìì ìëì ì½ë를 ì¶ê°íì¸ì.
this.displayCar = displayCar;
ë°ë¼ì Car
ì ìì ì ì²´ ë´ì©ì ë¤ìê³¼ ê°ìì§ëë¤.
function Car(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
this.displayCar = displayCar;
}
ì´ì ê°ê°ì ê°ì²´ì ëí´ displayCar
ë©ìë를 í¸ì¶í ì ììµëë¤.
car1.displayCar();
car2.displayCar();
this
ë¡ ê°ì²´ 참조í기
JavaScriptìë this
ë¼ë í¹ë³í í¤ìëê° ììµëë¤. this
를 ì¬ì©íë©´ ë©ìë ë´ìì íì¬ ê°ì²´ë¥¼ 참조í ì ììµëë¤. ì를 ë¤ì´ Manager
and Intern
ë ê°ì²´ë¥¼ ê°ì í´ë³´ê² ìµëë¤. ê°ê°ì ê°ì²´ë ìì ë§ì name
, age
, job
ìì±ì ê°ì§ëë¤. ìëì sayHi()
í¨ììì this.name
ì ì ê·¼íë ê²ì 주목íì¸ì. ì´ í¨ì를 ê°ê°ì ê°ì²´ì í ë¹í í í¸ì¶íë©´ 'ìë
íì¸ì, ì ì´ë¦ì'
, ìì ì name
, ê·¸ë¦¬ê³ 'ì
ëë¤.'
ë¡ êµ¬ì±ë 문ìì´ì ì¶ë ¥íê² ë©ëë¤.
const Manager = {
name: "John",
age: 27,
job: "ìíí¸ì¨ì´ ìì§ëì´",
};
const Intern = {
name: "Ben",
age: 21,
job: "ìíí¸ì¨ì´ ìì§ëì´ ì¸í´",
};
function sayHi() {
console.log(`ìë
íì¸ì, ì ì´ë¦ì ${this.name}ì
ëë¤.`);
}
// ë ê°ì²´ 모ëì sayHi í¨ì ì¶ê°
Manager.sayHi = sayHi;
Intern.sayHi = sayHi;
Manager.sayHi(); // ìë
íì¸ì, ì ì´ë¦ì John ì
ëë¤.'
Intern.sayHi(); // ìë
íì¸ì, ì ì´ë¦ì Ben ì
ëë¤.'
ìì this
ë ìì ì´ ìí ê°ì²´ë¥¼ 참조í©ëë¤. ì´ì ëì´ë¥¼ ìë ¤ì£¼ë 문ì¥ì ì½ìì 기ë¡íë í¨ì howOldAmI()
를 ìì±í´ë³¼ ì ìì ê²ì
ëë¤.
function howOldAmI() {
console.log(`ì ë ${this.age}ì´ì
ëë¤.`);
}
Manager.howOldAmI = howOldAmI;
Manager.howOldAmI(); // ì ë 27ì´ì
ëë¤.
ì ê·¼ìì ì¤ì ì ì ìí기
ì ê·¼ìë í¹ì ìì±ì ê°ì ë°ííë ë©ìëì ëë¤. ì¤ì ìë í¹ì ìì±ì ê°ì ì¤ì íë ë©ìëì ëë¤. ì ê·¼ìì ì¤ì ìë ìì± ì¶ê°ë¥¼ ì§ìíë ê°ì²´ë¼ë©´, ì¬ì ì ìë ì½ì´ ê°ì²´ì ì¬ì©ì ì ì ê°ì²´ 모ëì ì¶ê°í ì ììµëë¤.
ì ê·¼ìì ìì±ìë...
ê°ì²´ ì´ê¸°ì를 ì¬ì©í´ ì ê·¼ìì ì¤ì ì를 ì ìíë ê²½ì° íìí ê²ì, ì ê·¼ì ë©ìë ì´ë¦ ìì get
, ì¤ì ì ë©ìë ì´ë¦ ìì set
ì ë¶ì´ë ê² ë¿ì
ëë¤. ë¬¼ë¡ ëª¨ë ì ê·¼ì ë©ìëë ì무 매ê°ë³ìë ë°ì§ ìê³ , ì¤ì ì ë©ìëë ì íí íëì 매ê°ë³ì(ì¤ì í ê°)ë§ ë°ëë¤ë ì íì ììµëë¤.
const o = {
a: 7,
get b() {
return this.a + 1;
},
set c(x) {
this.a = x / 2;
},
};
console.log(o.a); // 7
console.log(o.b); // 8 <-- ì´ ìì ì get b() ë©ìë ì¤í
o.c = 50; // <-- ì´ ìì ì set c(x) ë©ìë ì¤í
console.log(o.a); // 25
ì¬ê¸°ì o
ê°ì²´ì ìì±ì ë¤ìê³¼ ê°ìµëë¤.
o.a
â ì«ìo.b
â o.a
ì 1ì ëí ê°ì ë°ííë ì ê·¼ìo.c
â o.c
ì ì¤ì í ê°ì ë°ì o.a
ì ì¤ì íë ì¤ì ìë¤ë§ ê°ì²´ 리í°ë´ìì "[gs]et property()"ì ì¬ì©í´ ì ìí ì ê·¼ìì ì¤ì ìì í¨ì ì´ë¦ì ì ê·¼ìì ì¤ì ìì ì¤ì ì´ë¦ì´ ìëëë¤. [gs]et propertyName(){ }
êµ¬ë¬¸ì´ ì긴 ëª¨ìµ ë문ì ê·¸ë ê² ë³´ì¼ ìë ìì§ë§ì.
ì ê·¼ìì ì¤ì ìë ëí ê°ì²´ ìì± ì´íì Object.defineProperties()
ë©ìëë¡ ì¶ê°í ì ììµëë¤. ì´ ë©ìëì 첫 ë²ì§¸ 매ê°ë³ìë ì ê·¼ìì ì¤ì ì를 ì¶ê°í ê°ì²´ê³ , ë ë²ì§¸ 매ê°ë³ìë ìì± ì´ë¦ì´ ì¶ê°í ì ê·¼ì/ì¤ì ì ì´ë¦, ìì± ê°ì ì ê·¼ì/ì¤ì ì를 ì ìíë ê°ì²´ì
ëë¤. ë¤ìì ë°ë¡ ì ìì ìì ì ìí ê²ê³¼ ê°ì ì ê·¼ì/ìì±ì를 ì¶ê°íë ì½ëì
ëë¤.
const o = { a: 0 };
Object.defineProperties(o, {
b: {
get: function () {
return this.a + 1;
},
},
c: {
set: function (x) {
this.a = x / 2;
},
},
});
o.c = 10; // ì¤ì ì ì¤í, a ìì±ì 10 / 2 = 5 í ë¹
console.log(o.b); // ì ê·¼ì ì¤í, a + 1 = 6 ë°í
ë íí ì¤ ì íí ííë ì¬ë¬ë¶ì íë¡ê·¸ëë° ì¤íì¼ê³¼ íì¬ í´ì¼ íë ìì ì ë¬ë ¸ìµëë¤. íë¡í íì ì ì ìí ë ì´ë¯¸ ê°ì²´ ì´ê¸°ì를 ì¬ì© ì¤ì´ë¼ë©´ ìë§ ëë¶ë¶ ê°ê²°í¨ê³¼ ìì°ì¤ë¬ìì¼ë¡ ì¸í´ ì²ì íí를 ì ííê² ë ê²ì ëë¤. ê·¸ë¬ë ê°ì²´ íí í íì ì ë°ë¡ ìì±íì§ ìì ë±ì ì´ì ë¡ ëì¤ì ì ê·¼ìì ì¤ì ì를 ì¶ê°í´ì¼ í íìê° ìì¼ë©´ ë ë²ì§¸ê° ì ì¼í ë°©ë²ì ëë¤. ë ë²ì§¸ ë°©ë²ì JavaScriptì ëì ì¸ ëª¨ìµì ê°ì¥ ì ëíë´ë íí ì¤ íëê² ì§ë§, ì½ê±°ë ì´í´í기 íë ì½ë를 ë§ë¤ê¸°ë í©ëë¤.
ìì± ìì ììí ìì±ì´ ìë ê²½ì° delete
ì°ì°ìë¡ ìì±ì ìì í ì ììµëë¤.
// aì b ë ìì±ì ìë¡ì´ ê°ì²´ ìì±
const myobj = new Object();
myobj.a = 5;
myobj.b = 12;
// a ìì±ì ì ê±°í´ì b ìì±ë§ ë¨ê¹
delete myobj.a;
console.log("a" in myobj); // ì¶ë ¥: false
ê°ì²´ ë¹êµ
JavaScriptì ê°ì²´ë 참조 íì ì ëë¤. ë ê°ì ê°ì²´ë ìë¡ ê°ì ìì±ì ê°ëë¼ë, ìì ë¤ë¼ë¦¬ë ì ë ê°ì§ ìì¼ë©° ì¤ì§ ì기 ìì ê³¼ì ë¹êµë§ ì°¸ì ë°íí©ëë¤.
// ë ê°ì ë³ì, ë ê°ì ê°ì ìì±ì ê°ì§ ìë¡ ë¤ë¥¸ ê°ì²´
const fruit = { name: "ì¬ê³¼" };
const fruitbear = { name: "ì¬ê³¼" };
fruit == fruitbear; // false ë°í
fruit === fruitbear; // false ë°í
// ë ê°ì ë³ì, íëì ê°ì²´
const fruit = { name: "ì¬ê³¼" };
const fruitbear = fruit; // fruit ê°ì²´ 참조를 fruitbearì í ë¹
// fruitê³¼ fruitbearê° ê°ì ê°ì²´ë¥¼ ê°ë¦¬í´
fruit == fruitbear; // true ë°í
fruit === fruitbear; // true ë°í
fruit.name = "í¬ë";
console.log(fruitbear); // ì¶ë ¥: { name: "ì¬ê³¼" }ê° ìëë¼ { name: "í¬ë" }
ë¹êµ ì°ì°ì ëí ë ìì¸í ì ë³´ë ëì¼ ì°ì°ììì ë ììë³´ì¸ì.
ê°ì´ 보기page(Doc) not found /ko/docs/Web/JavaScript/Guide/Details_of_the_Object_Model
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4