JavaScript의 모든 것이 객체는 아닙니다_기본
많은 언어에서 "모든 것이 객체입니다"라고 주장하지만 JavaScript에서는 모든 값이 객체가 아닙니다.
원시 값 대 객체
JavaScript의 값은 기본 값(원시)과 객체(객체)라는 두 가지 주요 범주로 나눌 수 있습니다.
정의
JavaScript에서 두 값의 정의:
아래 값은 원래 값입니다.
1. 문자열
2. 숫자: JavaScript의 모든 숫자는 부동 소수점 숫자입니다
3. 부울 값
4.null
5.정의되지 않음
다른 모든 값은 객체입니다. 객체를 더 세분화할 수 있습니다:
1. 원래 값의 래퍼: 부울, 숫자, 문자열. 직접적으로 사용되는 경우는 거의 없습니다.
2. 리터럴로 생성된 객체. 다음 리터럴은 생성자를 통해서도 생성할 수 있는 객체를 생성합니다. 리터럴을 사용하여 객체를 만들 수 있습니다.
•[]는 새로운 Array()입니다
•{}는 새로운 Object()입니다
•function() {}은 새로운 Function()입니다
•/s*/는 새로운 RegExp("\ s*")
3. 날짜: new Date("2011-12-24")
차이
열거된 기본 요소와 비원시 요소를 통해 기본 요소와 객체를 정의할 수 있습니다. 그러나 기본 요소와 개체가 무엇인지 설명할 수도 있습니다. 객체부터 시작해 보겠습니다.
1. 객체는 변경 가능합니다:
> 🎜>> ; obj.foo = 123; // 속성 및 값 추가
123
> obj.foo // 속성 읽기 및 속성 값 반환
123
거짓
객체는 참조로 비교됩니다. 식별자가 동일한 두 객체만 동일한 것으로 간주됩니다.
참
> var1.foo = 123; // 변수 val1의 속성 수정
123> var2.foo // val2도 변경됨
123
예상대로 기본 값은 객체와 동일하지 않습니다.
코드 복사
🎜>
2. 원래 값에는 내부 식별자가 없으며 원래 값은 값별로 비교됩니다. 두 원래 값을 비교하는 기준은 두 원래 값의 내용이 동일할 경우입니다. 두 개의 원래 값은 동일한 것으로 간주됩니다.
这意味着,一个原始值的标识就是它的值,javascript 引擎没有为原始值分配唯一标识。
最后两个事实结合起来的意思是:我们无法区分一个变量到底是对象的引用,还是原始值的副本。
陷阱:原始值和它们的包装类型
规则:忽略尽可能多的包装类型。 在其他编程语言如Java,你很少会注意到他们。
原始值类型 boolean, number 以及 string 都有自己对应的包装类型 Boolean, Number 和 String。 包装类型的实例都是对象值,两种类型之间的转换也很简单:
•转换为包装类型:new String("abc")
•转换为原始类型:new String("abc").valueOf()
原始值类型以及它们相应的包装器类型有很多不同点,例如:
> typeof "abc"
'string'
> typeof new String("abc")
'object'
> "abc" instanceof String
false
> new String("abc") instanceof String
true
> "abc" === new String("abc")
false
包装类型的实例是一个对象,因此和 JavaScript 和对象一样,包装类型也无法进行值的比较(只能比较引用)。
> var a = new String("abc");
> var b = new String("abc");
> a == b
false // 虽然 a 和 b 有相同的内容,但是依然返回 false
> a == a
true
原始值没有自己的方法
包装对象类型很少被直接使用,但它们的原型对象定义了许多其对应的原始值也可以调用的方法。 例如,String.prototype 是包装类型 String 的原型对象。 它的所有方法都可以使用在字符串原始值上。 包装类型的方法 String.prototype.indexOf 在 字符串原始值上也有,它们并不是两个拥有相同名称的方法,而的的确确就是同一个方法:
> "abc".charAt === String.prototype.charAt
true
在数字的包装类型 Number 的原型对象有 toFixed 方法,即 Number.prototype.toFixed,但是当我们写如下代码时却发生错误:
> 5.toFixed(3)
SyntaxError: Unexpected token ILLEGAL
此错误是解析错误(SyntaxError),5 后面跟着一个点号(.),这个点被当作了小数点,而小数点后面应该是一个数,以下代码可以正常运行:
> (5).toFixed(3)
"5.000"
> 5..toFixed(3)
"5.000"
值的分类:typeof 和 instanceof
如果你想要对值进行分类,你需要注意原始值和对象之间的区别。 typeof 运算可以用来区分原始值和对象。instanceof 可以用来区分对象,而且,instanceof 对于所有的原始值都返回 false。
typeof
typeof 可以用来判断原始值的类型,以及区分对象值和原始值:
> typeof "abc"
'string'
> typeof 123
'number'
> typeof {}
'object'
> typeof []
'object'
typeof 返回以下字符串:
参数 | 结果 |
---|---|
undefined | "undefined" |
null | "object" |
布尔值 | "boolean" |
数字 | "number" |
字符串 | "string" |
函数 | "function" |
其他 | "object" |
참고:
•typeof는 null에서 작업할 때 "객체"를 반환합니다. 이는 JavaScript 언어 자체의 버그입니다. 안타깝게도 너무 많은 기존 코드가 이미 이 동작에 의존하고 있기 때문에 이 버그는 수정되지 않습니다. 이는 null이 실제로 객체[4]라는 의미는 아닙니다.
•typeof를 사용하면 예외를 발생시키지 않고 변수가 선언되었는지 확인할 수도 있습니다. 선언되지 않은 변수를 함수 매개변수에 전달할 수 없기 때문에 어떤 함수도 이를 수행할 수 없습니다.
> '
> undeclaredVariable
ReferenceError: undeclaredVariable이 정의되지 않았습니다
•배열은 객체입니다.
[5] 및 [6] 유형에 대한 추가 정보.
instanceof
instanceof는 값이 생성자의 인스턴스인지 여부를 감지할 수 있습니다.
> 문자열의 "abc" 인스턴스
false

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 오늘날의 디지털 시대에는 점점 더 많은 기업과 서비스에서 온라인 예약 기능을 제공해야 합니다. 효율적인 실시간 온라인 예약 시스템을 구현하는 것이 중요합니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. WebSocket이란 무엇입니까? WebSocket은 단일 TCP 연결의 전이중 방식입니다.

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 소개: 인터넷의 대중화와 기술의 발전으로 점점 더 많은 레스토랑에서 온라인 주문 서비스를 제공하기 시작했습니다. 실시간 온라인 주문 시스템을 구현하기 위해 JavaScript 및 WebSocket 기술을 사용할 수 있습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 양방향 통신을 실현할 수 있습니다. 실시간 온라인 주문 시스템에서는 사용자가 요리를 선택하고 주문을 하면

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

JavaScript에서 HTTP 상태 코드를 얻는 방법 소개: 프런트 엔드 개발에서 우리는 종종 백엔드 인터페이스와의 상호 작용을 처리해야 하며 HTTP 상태 코드는 매우 중요한 부분입니다. HTTP 상태 코드를 이해하고 얻는 것은 인터페이스에서 반환된 데이터를 더 잘 처리하는 데 도움이 됩니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. HTTP 상태 코드란 무엇입니까? HTTP 상태 코드는 브라우저가 서버에 요청을 시작할 때 서비스가

사용법: JavaScript에서 insertBefore() 메서드는 DOM 트리에 새 노드를 삽입하는 데 사용됩니다. 이 방법에는 삽입할 새 노드와 참조 노드(즉, 새 노드가 삽입될 노드)라는 두 가지 매개 변수가 필요합니다.
