>웹 프론트엔드 >JS 튜토리얼 >Javascript 프리미티브는 실제로 객체입니까?

Javascript 프리미티브는 실제로 객체입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-17 06:56:031047검색

Are Javascript Primitives Actually Objects?

Javascript 프리미티브 대 객체: 개념 명확화

"Javascript의 거의 모든 것이 객체"라는 일반적인 인식에도 불구하고, 전부는 아닙니다. 언어의 엔터티는 이 정의를 따릅니다. 프리미티브와 객체의 이러한 구별은 명확한 설명이 필요합니다.

프리미티브

객체와 달리 프리미티브는 기본 형태로 존재하는 불변의 값입니다. 메서드와 속성이 부족하고 다음과 같은 데이터 유형을 포함합니다.

  • 문자열
  • 숫자
  • 부울

객체 래퍼

프리미티브에는 해당 개체 래퍼가 있습니다. (문자열, 숫자, 부울) 메서드와 속성을 제공합니다. 그러나 프리미티브 자체는 객체가 아닙니다. 기본 요소의 속성과 상호 작용하기 위해 Javascript는 작업에 대한 래퍼 객체를 암시적으로 생성합니다.

문자열의 예

아래 코드 조각을 고려하세요.

var s = "foo";
var sub = s.substring(1, 2); // sub is now the string "o"

Javascript는 내부적으로 다음을 수행합니다. 단계:

  1. s에서 String 래퍼 객체를 생성합니다.
  2. String 객체에서 substring() 메서드를 호출합니다.
  3. String 객체를 삭제합니다.
  4. 결과를 반환합니다. string.

프리미티브에 속성 할당 시도

프리미티브에 속성을 할당하는 것은 이러한 속성이 임시 래퍼 개체와 연결되고 원시 자체가 아님:

var s = "foo";
s.bar = "cheese";
alert(s.bar); // undefined

다음과 같은 기능 객체

반면에 함수는 Object 클래스에서 상속할 수 있는 진정한 객체입니다. 속성을 가지며 다른 객체처럼 조작할 수 있습니다.

function foo() {}
foo.bar = "tea";
alert(foo.bar); // tea

결론적으로 기본 객체는 객체와 유사한 동작을 하는 것처럼 보이지만 Javascript의 실제 객체와는 다릅니다. 객체 래퍼는 기본 값과의 상호 작용을 허용하지만 기본 값은 변경할 수 없습니다. 그러나 함수는 모든 개체 기능을 수행할 수 있는 완전한 기능을 갖춘 개체입니다. 이러한 이해를 통해 Javascript 언어에서 기본 요소와 객체 간의 관계가 명확해집니다.

위 내용은 Javascript 프리미티브는 실제로 객체입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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