JavaScript 인터뷰 질문 — 객체
지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.
프론트엔드 개발자로 일하려면 코딩 인터뷰를 해야 합니다.
이 기사에서는 몇 가지 객체 질문을 살펴보겠습니다.
개체에 특정 속성이 있는지 확인하는 방법은 무엇인가요?
객체에 속성이 있는지 확인하는 몇 가지 방법이 있습니다.
먼저
in
연산자를 사용할 수 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다.const foo = { a: 1 };
console.log('a' in foo);
in
연산자는 주어진 이름의 속성이 개체 자체에 있는지 또는 프로토타입 체인의 프로토타입에 있는지 확인합니다.true
는 a
의 속성이므로 위의 코드는 foo
를 반환해야 합니다.console.log(‘toString’ in foo);
는 true
가 toString
에서 상속되는 Object
의 프로토타입에 있으므로 foo
도 기록해야 합니다.Object.prototype.hasOwnProperty
메서드를 사용할 수도 있습니다. 예를 들어 다음과 같이 사용할 수 있습니다.const foo = { a: 1 };
console.log(foo.hasOwnProperty('a'));
위의 코드는
hasOwnProperty
의 프로토타입에 있는 foo
메소드를 사용하여 a
가 foo
에 존재하는지 여부와 자체 속성을 확인합니다. 즉, 프로토타입이 아닌 foo
자체에 있다는 의미입니다.console.log
이후 true
로그a
는 foo
본인 소유입니다.마지막으로 다음과 같이 대괄호 표기법을 사용하여 확인할 수 있습니다.
const foo = {
a: 1
};
console.log(foo['a']);
undefined
이외의 값을 반환하면 속성으로 추가한 것입니다.이 예의 경우이므로
true
를 반환해야 합니다.Object.seal과 Object.freeze 메소드의 차이점은 무엇입니까?
개체에서
Object.seal
를 호출한 후 속성이 개체에 추가되는 것을 중지합니다.또한 기존의 모든 속성을 구성 불가능하게 만듭니다. 즉, 속성 설명자가 변경되지 않습니다.
또한 기존 속성은 개체에서 호출된 후
delete
연산자로 제거할 수 없습니다.객체의 프로토타입인 객체의
__proto__
속성도 봉인되어 있습니다.예를 들어 다음이 있는 경우:
const foo = {
a: 1
};
Object.seal(foo);
delete foo.a
마지막 줄을 실행한 후에도 여전히
foo.a
를 볼 수 있습니다.엄격 모드에 있으면 오류가 발생합니다.
Object.freeze
개체를 변경할 수 없게 만듭니다. 기존 속성은 각 속성의 값을 포함하여 어떤 식으로든 변경할 수 없습니다.또한
Object.seal
가 수행하는 모든 작업을 수행합니다.in 연산자와 객체의 hasOwnProperty 메소드의 차이점은 무엇인가요?
in
연산자는 속성이 개체 자체에 있고 프로토타입 체인의 프로토타입에 있는지 확인합니다.반면에
hasOwnProperty
는 객체가 프로토타입이 아닌 호출된 객체 내부에 있는지 여부만 확인합니다.typeof null이 객체를 반환하는 이유는 무엇인가요?
null
유형이 object
인데, 이는 JavaScript의 초기 버전에서 작동하는 방식이기 때문입니다. 기존 코드베이스가 깨지는 것을 방지하기 위해 이 방식을 유지합니다.값이 null인지 확인하는 방법은 무엇입니까?
다음과 같이
null
를 확인하려면 완전 항등 연산자를 사용해야 합니다.foo === null
새 키워드의 기능은 무엇인가요?
new
키워드는 생성자 함수 또는 클래스에서 개체를 만드는 데 사용됩니다.예를 들어,
Person
클래스가 있는 경우:function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
};
그런 다음 다음과 같이 작성하여 새 인스턴스를 만들 수 있습니다.
const person = new Person("Jane", "Smith");
new
는 몇 가지 작업을 수행합니다.this
값prototype
속성에서 상속합니다. 따라서 Person
는 Person.prototype
에서 상속합니다. return
문이 없으면 this
를 반환합니다. ES2015 또는 이후 버전의 클래스 구문은 생성자 함수에 대한 구문 설탕일 뿐입니다. 동일한 작업을 수행하지만 클래스처럼 보입니다.
결론
in
연산자, hasOwnProperty
또는 대괄호 표기법을 사용하여 객체에 속성이 있는지 확인할 수 있습니다.Object.seal
속성 설명자가 변경되고 속성이 삭제되는 것을 방지합니다.Object.freeze
는 객체를 불변으로 만듭니다.null
는 자체 유형이 아니라 object
유형입니다.new
키워드는 생성자 함수에서 새 개체를 만들고 반환합니다.
Reference
이 문제에 관하여(JavaScript 인터뷰 질문 — 객체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aumayeung/javascript-interview-questions-objects-5hjd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)