20_대상을 대상으로 하는 프로그램 설계(원형[3]상용 방법 상해)

isPrototypeOf(인스턴스 객체)의 프로토타입을 판단하는 방법
// ( ) 
console.info(Person.prototype.isPrototypeOf(p1)); //true

ECMA5 새로운 기능 Object.getPrototypeOf(): 인스턴스 객체를 기준으로 원형 객체 가져오기
//ECMA5: Object.getPrototypeOf(obj)  
function Person(){
}

Person.prototype.name = "z3";
Person.prototype.age = 20;
Person.prototype.sayName = function(){
    console.info(" !");
};

var p1 = new Person();
console.info(p1.name); //z3
var protoObj = Object.getPrototypeOf(p1);
console.info(protoObj === Person.prototype); //true

한 대상의 속성을 읽을 때마다 먼저 검색을 한다. 1. 실례 대상에 필요한 속성이 있으면 실례 대상의 속성 값을 얻는다.2. 실례 대상에 없으면 원형 대상에서 검색하고 원형 대상에 되돌아오는 값을 찾아야 한다.3. 원형 대상에도 없으면 undefined로 되돌아간다
delete 조작부호 실례 대상의 속성 삭제
var p2 = new Person();
console.info(p2.name); //z3
p2.name = "w5";
console.info(p2.name); //w5
delete p2.name; // delete 
console.info(p2.name); //z3

object.hasOwnProperty(attribute)는 속성이 객체 자체에 속하는지 여부를 판단합니다.
// 
var p3 = new Person();
p3.name = "z6";
console.info(p3.name); 
console.info(p3.hasOwnProperty("name")); //true
console.info(p3.hasOwnProperty("age")); //false
console.info(p3.hasOwnProperty("name1")); //false

in 조작부호는 대상에 이 속성이 존재하는지 판단합니다. (실례 대상이든 원형 대상이든)
//in for-in 
//in   , 
var p1 = new Person();
console.info("name" in p1); //true
var p2 = new Person();
p2.name = "w3"; 
console.info("name" in p1); //true

// , 
for(var attr in p2){
    console.info(attr);
}

원형 객체에 속성이 있는지 여부를 판단합니다.
// :
//  1、  !hasOwnProperty(propName)
//  2、  propName in obj
function hasPrototypeProperty(obj, propName){
    return !obj.hasOwnProperty(propName) && propName in obj;
}

var p3 = new Person();
p3.name = "xiao A";
console.info(hasPrototypeProperty(p3, "name"));

ECMA5 새로운 기능 Object.keys();현재 대상의 모든 키를 가져와서 ECMA5 새 기능 Object를 되돌려줍니다.getOwnPropertyNames 열거 대상의 모든 속성: 내부 속성이 열거될 수 있든 없든
//ECMA5  Object.keys(obj) Object.getOwnPropertyNames(obj)
// 
//Object.keys(obj)  
//Object.getOwnPropertyNames(obj)  , constructor 
var p1 = new Person();
var arr1 = Object.keys(p1); // []
var arr2 = Object.getOwnPropertyNames(p1); // []
var arr3 = Object.keys(Object.getPrototypeOf(p1)); // ["name", "age", "sayName"] 
var arr4 = Object.getOwnPropertyNames(Object.getPrototypeOf(p1)); //["constructor", "name", "age", "sayName"]
console.info(arr1);
console.info(arr2);
console.info(arr3);
console.info(arr4);

좋은 웹페이지 즐겨찾기