함수, 메소드 호출
함수 호출 방법
Objcet create();
log(Object.create); // create함수가 있는지 없는지의 여부를 물어봄. 있으니 출력됨. function create() { [native code] }
log(Objcet.prototype.create); //undefined
메소드 호출방법
Objcet.prototype.toString();
또는 인스턴스를 생성하여 호출.
log(Object.prototype.toString); //Object.prototype에 toString이 존재하므로 함수 출력. function create() { native code] }
var obj = {};
log(obj.toString); //인스턴스를 사용해 메소드를 호출할 때는 prototype을 작성하지 않음. prototype에 연결된 메소드로 인스턴스를 생성하기 때문(??). function toString() { [native code] }
함수와 메소드를 구분해야하는 이유
JS코드 작성 방법이 다르기 때문.
함수는 파라미터에 값을 구하고 메소드는 메소드 앞에 값을 작성.
log(String.fromCharCode(49, 65)); //???????????
prototype과 연결되어있으면 메소드고 연결되어 있지 않으면 함수.
함수는 파라미터에 데이터를 작성해야하고 메소드는 이름 앞에 데이터를 작성할 수 있다.
프로퍼티 처리 메소드
hasOwnProperty()
구분 | 데이터(값) |
object | 기준 인스턴스 |
파라미터 | 프로퍼티 이름 |
반환 | true, false |
인스턴스에 파라미터 이름이 존재하면 true, 존재하지 않으면 false 반환
var obj = {value : 123};
var own = obj.hasOwnProperty("value");
log(own); //true obj인스턴스에 value프로퍼티가 존재함.
var obj = {value: undefined};
var own = obj.hasOwnProperty("value");
log(own); // undefined 값은 fasle로 처리하지만 여기서는 값을 체크하는 것이 아닌 존재유무를 따지므로 true 반환
자신이 만든것이 아니라 상속받은 프로퍼티이면 false반환.
var obj = {};
var own = obj.hasOwnProperty("hasOwnProperty");
log(own); //hasOwnProperty()는 자신이 만든것이 아니라 빌트인 Object 오브젝트에 있는것. {}를 실행하면 빌트인 Object 오브젝트의 prototype에 연결된 메소드를 사용하여 Object 인스턴스를 만드므로 자신이 만든 것이 아님. false
propertyInsEnumerable()
구분 | 데이터(값) |
object | 인스턴스, 오브젝트 |
파라미터 | 프로퍼티 이름 |
반환 | true, false |
오브젝트에서 프로퍼티를 열거할 수 있으면 true, 없으면 false 반환.
var obj = {sports : "축구"};
log(obj.proertyIsEnumerable("sports")); //true
var obj = {sports : "축구"};
Object.defineProperty(obj. "sports", {
enumerable : false
});
log(obj.propertyIsEnuerable("sports"));
for (var name in obj) {
log(name);
} // enumerable:fasle로 열거 불가. for-in문에서 프로퍼티가 열거되지 않음. false
'javascript' 카테고리의 다른 글
Function 오브젝트 (0) | 2021.10.14 |
---|---|
Object와 prototype, 빌트인 object 특징 (0) | 2021.10.08 |
objcet 오브젝트 (0) | 2021.10.04 |
Unicode 관련 함수 (0) | 2021.09.30 |
정규표현식을 사용할 수 있는 함수 (0) | 2021.09.29 |