>  기사  >  웹 프론트엔드  >  js에서 쉽게 혼동되는 몇 가지 메소드

js에서 쉽게 혼동되는 몇 가지 메소드

高洛峰
高洛峰원래의
2016-10-17 09:50:491202검색

자바스크립트에는 함수 이름이 매우 길어서 사용 시 혼란을 야기할 수 있으므로 정리하여 인상을 깊게 하고자 합니다.

①Object.getOwnPropertyDescriptor - 개체의 특정 속성에 대한 속성 설명자 읽기(값/쓰기 가능/열거 가능/구성 가능)

이 메서드는 두 가지 매개 변수를 허용합니다.(속성이 있는 개체) , 해당 설명자의 속성 이름을 읽으려면) 반환 값은 개체입니다.

var o = Object.getOwnPropertyDescriptor({x : 1}, 'x');
//{value:1, writable:true, enumerable:true, configurable:true}alert(o);    //  [object Object]
이 방법은 세 가지 매개 변수(수정할 개체, 생성 또는 수정할 속성, 속성 설명자 개체)를 허용합니다.

var o = Object.getOwnPropertyDescriptor({}, &#39;toString&#39;);<br>
alert(o);     //undefined
위는 빈 객체에 두 개의 데이터 속성(_year 및 edition)과 접근자 속성(연도)을 정의합니다. 여기의 속성은 모두 동시에 생성됩니다.

④isPrototypeOf - 객체와 프로토타입 간의 관계를 결정합니다.
var o = {};
            Object.defineProperty(o, &#39;x&#39;, {
                value : 1,
                writable : true,
                enumerable : false,
                configurable : true
            });
            alert(o.x);   //  1
            
            Object.defineProperty(o, &#39;x&#39;, {writable : false});
            o.x = 2;   //不可行,不会报错,但不会修改, o.x = 1;
            
            Object.defineProperty(o, &#39;x&#39;, {value : 2});
            alert(o.x);   //  2

friend 객체 내부에 Person.prototype에 대한 포인터가 있으므로 true가 반환됩니다.

Object.defineProperties({}, {
                _year : {
                    value : 2016,
            writable : true, 
                    enumerable : true,
                    configurable : true 
                },
                edition : {
                    value : 1
                },
                year : {
                    get : function(){
                        return this._year;
                    },
                    set : function(newValue){
                        if(newValue > 2004){
                            this._year = newValue;
                            this.edition += newValue - 2004;
                        }
                    }
                }
            });

⑤Object.getPrototypeOf - 객체의 프로토타입을 편리하게 가져옵니다.

IE9+에서 지원되는 ES5의 새로운 메서드입니다.

function Person(){}            
            var friend = new Person();
            alert(Person.prototype.isPrototypeOf(friend));  //true

⑥hasOwnProperty - 속성이 인스턴스 또는 프로토타입에 존재하는지 감지

hasOwnProperty()를 사용하면 인스턴스 속성에 액세스하고 있는지 쉽게 알 수 있습니다. 여전히 프로토타입 속성입니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.