hasOwnProperty,in

2664 단어
hasOwnProperty, in 차이점:
hasOwnProperty: 객체에 지정된 이름의 속성이 있는지 여부를 나타냅니다.
in: 대상이 이 속성에 접근할 수 있는지 여부 (대상에 직접 접근하거나 원형을 통해 접근하는 것을 포함)
다음 예제 코드를 보십시오.
(function () {

    function Person() {
    }

    var p = Person.prototype;
    p.name = " ";
    p.age = 24;
    var person1 = new Person();
    console.log(person1.hasOwnProperty("name")); // false
    console.log("name" in person1); //true
})();

두 줄 코드 추가
    person1.name = "meng";
    console.log(person1.hasOwnProperty("name")); //true

양자의 차이를 이용하여 우리는 이 속성이 대상에 존재하는지 원형에 존재하는지 판단할 수 있다.
판단 과정은 in이true라면 현재 대상의 부류에 이 속성이 있음을 설명하고hasOwnProperty로,true는 그가 이 속성을 가지고 있음을 의미하며,false는 아직 이 속성에 값을 부여하지 않았다는 것을 의미한다.
교묘하게 기억하기:hasOwnProperty,hasOwn은 바로 그 자신이 이 속성을 가지고 있는지 없는지를 나타낸다.
in, 어떤 안에서, 현재 방 안의 소파에 있는 물건도 이 방에 이런 물건이 있다고 말할 수 있다.
이상의 사고방식에 따라 스스로 파생하는 방법은 실현을 목적으로 대상이 이런 원형 방법이 있는지 판단하는 것이다
Object.prototype.hasPrototypeProperty=function ( pro) {
        return !this.hasOwnProperty(pro) && (pro in this);
    };

코드 응용 프로그램 (person1 성명 동상)
    console.log(person1.hasPrototypeProperty("name")); //true

    person1.name = " ";
    console.log(person1.hasPrototypeProperty("name")); //false

응용에서 알 수 있듯이 이 방법의 효과는 현재 대상이 원형적인 방법이면true로 돌아가고 자신이 이 속성을 성명한 후에false로 돌아간다.
전재 대상:https://www.cnblogs.com/chenluomenggongzi/p/6130685.html

좋은 웹페이지 즐겨찾기