-
[객체] - 객체 프로퍼티와 메소드JavaScript/기본 1 2022. 2. 5. 17:35
- 객체 프로퍼티(property)
- 모든 자바스크립트 객체는 Object객체와 Object.prototype객체의 모든 프로퍼티를 상속받는다.
- 객체 메소드 (method)
- hasOwnProperty( )
- 특정 프로퍼티가 해당 객체에 존재하는지 검사
- 직접 선언된 프로퍼티만 검사
- 같은 이름의 프로퍼티라도 상속받은 프로퍼티는 false반환
-
function Dog(color, name, age, family) { this.color = color; this.name = name; this.age = age; this.family = family; this.breed = function() { return this.color + " " + this.family; } } var myDog = new Dog("검정색", "곰", 3, "불독"); myDog.hasOwnProperty("color"); // ture myDog.hasOwnProperty("breed"); // true myDog.hasOwnProperty("class"); // false => 상속받은 프로퍼티
-
- propertyIsEnumerable( )
- 특정 프로퍼티가 해당 객체에 존재하고, 열거할 수 있는 프로퍼티인지 검사
- hasOwnProperty( )메소드가 true이면서, 동시에 열거할 수 있는지 검사
-
function Dog(color, name, age) { this.color = color; this.name = name; this.age = age; } var myDog = new Dog("흰색", "마루", 1); // color프로퍼티의 enumerable 속성을 false로 설정 Object.defineProperty(myDog, 'color', { enumerable: flase }); // enumerable: 열거가능한 document.write(myDog.propertyIsEnumerable("color") + "<br>"); // false document.write(myDog.propertyIsEnumerable("name") + "<br>"); // true document.write(myDog.propertyIsEnumerable("age")); // true
-
- isPrototypeOf( )
- 특정 객체의 프로토타입 체인에 현재 객체가 존재하는지 검사
-
var day = new Date(); // Date 객체를 생성함 // 객체 day의 프로토타입이 Date.prototype인지를 검사함 document.write(Date.prototype.isPrototypeOf(day)); // true document.write(Date.prototype.isPrototypeOf(new String())); // false
-
- 특정 객체의 프로토타입 체인에 현재 객체가 존재하는지 검사
- isExtensible( )
- 객체에 새로운 프로퍼티 추가할 수 있는지 여부 반환
- preventExtensions( )메소드 사용으로 해당 객체에 새로운 프로퍼티를 추가할 수 없도록 설정할 수 있다.
-
var day = new Date(); // Date 객체 생성 // 객체 day에 새로운 프로퍼티를 추가할 수 있는지 검사 document.write(Object.isExtensible(day) + "<br>"); // true // 해당 객체에 새로운 프로퍼티를 추가할 수 없도록 설정함 var myDay = Object.preventExtensions(day); document.write(Object.isExtensible(day)); // false
-
- toString( )
- 호출한 객체의 값을 문자열로 반환한다.
- 어떠한 인수도 전달받지 않는다.
-
var arr = [10, "문자열", true]; // 배열 var bool = false; // 불리언 function func() { return 0; } // 함수 arr.toString(); // 10, 문자열, true bool.toString(); // false func.toString(); // 함수의 소스 코드가 전부 문자열로 반환 // function func() { return 0; }
-
- valueOf( )
- 특정 객체의 원시 타입(primitive type)의 값을 반환한다.
- 원시 타입의 값을 가지고 있지 않다면, 객체 자신을 반환한다.
-
function func(n) { this.number = n; } myFunc = new func(4); document.write(myFunc + 5); // [object Object]5 <= 객체 자신 반환 func.prototype.valueOf = function() { // valueOf() 메소드 정의 return this.number; } document.write(myFunc + 5); // 9
-
- hasOwnProperty( )
- getter와 setter 메소드 정의
- getter
- 특정 프로퍼티의 값을 받아오기 위한 메소드
- 아무런 인수 전달하지 않고 호출한다.
-
var gildong = { age: 18 }; document.write(gildong.age + "<br>"); //18 Object.defineProperty(gildong, "americanAge", { get: function() { // getter method 정의 return this.age-1; } }); document.write(gildong.americanAge); // 17
- setter
- 특정 프로퍼티의 값을 설정하기 위한 메소드
- 객체의 프로퍼티 값을 변경할 때 setter메소드에 대입하고자 하는 값을 인수로 전달하여 호출
-
var gildong = { age: 18 }; gildong.age = 20; document.write(gildong.age + "<br>"); // 20 Object.defineProperty(gildong, "changeAge", { set: function(n) { // setter method 정의 this.age = this.age - n; } }); gilgong.changeAge = 5; document.write(gildong.age); //15
- getter
'JavaScript > 기본 1' 카테고리의 다른 글
[표준객체] - Number 객체 (0) 2022.02.07 [표준객체] - 전역객체와 래퍼객체(wrapper object) (0) 2022.02.06 [객체] - 객체 다루기 (this) (0) 2022.02.05 [객체] - 프로토타입 (0) 2022.02.05 [객체] - 객체의 생성방법 (0) 2022.02.05 - 객체 프로퍼티(property)