JS 31 Object
Object
demo34.html
Object라는 이름을 가진 객체
object객체는 가장 기본적인 형태를 가지고 있는 객체임
다시말해 아무것도 상속받지 않는 순수한 객체
JS에서는 값을 저장하는 기본적인 단위로 Object를 사용함
var grades = { dotoli: 10, zzphoo: 6, Dev_dotoli: 80 };
//객체의 효용
//(각각의 값을가진)객체를 만들어 변수에 저장한다는 개념
어떤객체를 만들어도 존재했던 .prototype은
사실 모든 객체의 부모격인 Object의 property였던 것?
그러니까 만약
모든 객체가 가져야 할 기능을 추가하고 싶다면
Object 객체에 method를 추가하면 된다는 것
Object.keys( )
var arr = ["a", "b", "c"];
console.log("object.keys(arr)", Object.keys(arr));
//: object.keys(arr) (3) ['0', '1', '2']
//배열에 담겨있는 index의 list를 만들어서 배열로 retun
var o = { name: "zzphoo", age: "20", city: "seoul" };
console.log(Object.keys(o));
//: ['name', 'age', 'city']
// key값을 배열로 만들고 return함
Object.prototype.toString( )
const o = {};
console.log(o.toString());
//: [object Object]
const a = [1, 2, 3];
console.log(a.toString());
//: 1,2,3
//Object.keys()
var arr = ["a", "b", "c"];
console.log("object.keys(arr)", Object.keys(arr));
//생성자함수.keys = function
//Object.prototype.toString()
var o = new Object();
console.log("o.toString()", o.toString());
var a = new Array(1, 2, 3);
console.log("a.toString()", a.toString());
//생성자함수.prototype.tostring = function
//생성자함수를 이용해서 new Object로 객체를 만들면
//property를 상속하는 객체가 생성됨
//그러면 method로써 toString을 사용함
Object에 .prototype이 있고 없고에 따라 사용하는 방법이 다름
- 음.. 잘 이해안됨
Object객체를 확장하면
모든 객체가 접근할 수 있는 API를 만들 수 있음
확장
- .contain method를 추가해서
인자로 넣은 값이 유무를 true, false로 표현하려고 할 때
Object.prototype.contain = function (check) {
for (var name in this) {
if (this[name] === check) {
return true;
}
}
return false;
};
var o = { name: "egoing", city: "seoul" };
console.log(o.contain("egoing"));
//true
var a = ["egoing", "leezche", "grapittie"];
console.log(a.contain("leezche"));
//true
plus
Object.prototype.contain = function (check) {
for (var name in this) {
if (this[name] === check) {
return true;
} else false;
}
};
// 이렇게 짰더니 false부분이 undefined
else return false;
// 첫인자만 작동 나머지 false
확장의 위험
모든객체에 영향은 준다는 것은 장점이자 위험요소
for (var name in o) {
console.log(name);
}
//name
//city
//contain
//확장하면서 모든 객체에 추가했던 contain이라는 method가
//객체 o 안에도 추가되어버림 - 원했던 결과가 아님
for (var name in a) {
console.log(name);
}
//0
//1
//2
//contain
이럴때 사용할 수 있는 방법
.hasOwnProperty
실행한 객체가 인자로 전달한 어떤 값을
자신의 property로 가지고 있는지
for (var name in a) {
if (a.hasOwnProperty(name)) {
console.log(name);
}
}
// 0
// 1
// 2
for (var name in o) {
if (o.hasOwnProperty(name)) {
console.log(name);
}
}
//name
//city