JavaScript "모든 대상 이 아 닙 니 다"

6192 단어
전편: 함수 성명 과 함수 표현 식 - 함수 성명 과 함수 표현 식 의 공통점 과 차이 점
앞 에 쓰다
인터넷 상에 서 '자 바스 크 립 트 는 모든 것 이 대상' 이 라 고 말 하 는 경우 가 많 습 니 다. 그렇다면 이 '모든 것' 은 실제 적 인 '모든 것' 입 니까? 아니면 허수 입 니까? 인터넷 에 올 라 온 글 도 있 습 니 다. 어떤 것 은 당나귀 가 없 는 것 입 니 다. 개념 을 베 끼 는 것 입 니 다. 어떤 것 은 일부분 만 설명 하고 정확 한 결론 을 내리 지 못 했 습 니 다. 그러면 저 는 제 이 해 를 결합 하여 정확 한 결론 을 내리 고 싶 습 니 다.
물론 결론 은 글 의 끝 에 두 어야 한다. 아이들 은 이어서 아래 를 내 려 다 본다.
데이터 형식 개요
들 어가 기 전에 js 의 데이터 형식 을 개략 적 으로 말 할 필요 가 있 습 니 다. 물론 어린이 들 도 직접 패스 할 수 있 습 니 다. js 의 데이터 형식 은 두 가지 가 있 습 니 다. 원시 유형 과 대상 유형 입 니 다. 그 중에서 원시 유형 은 다음 과 같은 몇 가지 유형 을 포함 합 니 다. 디지털 형, 문자열 형, 불 값, null 과 undefined 입 니 다. 그 중에서 대상 유형 은 사용자 가 여러 가지 방법 으로 직접 만 든 대상 과 편지 등 을 포함 합 니 다.수조 나 이런 특수 대상.
원시 값
원본 값 수정 불가
원시 치 를 말 하면 원시 치 의 몇 가 지 를 간단하게 이야기 할 필요 가 있다.
먼저 결론 을 내린다.
원시 치 는 수정 할 수 없 는 것 이 고, 무엇이 무엇 인지 강요 해도 강요 할 수 없다.숫자, 불 값, null, undefined 는 수정 할 수 없 음 이 분명 합 니 다. 5 는 5 입 니 다. 6 이 될 수 없 지만 문자열 에 대해 서 는 일부 동료 들 이 의문 을 가 질 수 있 습 니 다. 문자열 을 어떻게 수정 할 수 없 습 니까? 그렇게 많은 문자열 방법 으로 문자열 을 수정 할 수 있 습 니 다. 설명 을 위해 서 는 따뜻 한 예 를 들 어 시원 하 게 하 는 것 이 좋 습 니 다.
var string='The handsome have five girlfriend.';
string.toUpperCase();

우 리 는 '잘 생 긴 남 자 는 다섯 명의 여자 친구 가 있다' 는 문자열 을 정의 했다.
alert('       :' + string + '        :' + string.toUpperCase());

OK, 출력 결 과 는 다음 과 같 습 니 다:
       :The handsome have five girlfriend.         :THE HANDSOME HAVE VIFE GIRLFRIEND.

이곳 을 보고 모든 것 이 적나라 해 졌 다.
문자열 을 보 는 방법 은 수 정 된 문자열 을 되 돌려 주 었 습 니 다. 사실은 새로운 문자열, 즉 두 문자열 을 되 돌려 주 었 습 니 다. 조 강 지 처 는 아직 침대 에 있 습 니 다. (다른 방법 은 동료 들 도 해 볼 수 있 습 니 다)
그러면 여기까지 이야기 하면 원시 값 은 확실히 수정 할 수 없 는 것 을 볼 수 있다. 즉, 원시 값 은 변 할 수 없 는 것 이다.
원시 값 이 대상 입 니까?
다음 에 우 리 는 본론 으로 들 어 갔다. 원시 치 는 도대체 대상 입 니까?
우선 대상 유형 은 당연히 대상 이다. 그 이 유 는 '우리 엄마 가 우리 엄마 라 는 것 을 증명 하 라' 는 것 이다. 원시 유형 이 대상 인지 아 닌 지 에 대해 서 는 문자열 형식 을 올 려 설명 한다.
예전 처럼 먼저 신선 한 피 가 줄줄 흐 르 는 예 를 들 자.
var string='Make Life Get Better';//   MLGB !!!!!!!!!
alert(string.length);

이 MLGB 는 문자열 입 니 다. 이치 상 대상 처럼 속성 이 있어 서 는 안 됩 니 다. 하지만 사실은 요? 이 신선 한 출력 을 다시 보 겠 습 니 다.
20

결 과 는 이 원시 값 문자열 이 문자열 대상 에 만 있 는 the diors have five girlfriend 속성 을 사 용 했 고 toUpperCase() 문자열 의 길 이 를 출력 했다.
ok, 그래서 우 리 는 문자열 형식 을 대상 으로 볼 이유 가 있 습 니 다. 왜 일 까요? 포장 대상 의 개념 과 관련 이 있 습 니 다.
포장 대상
사실 위의 예 에서 문자열 을 읽 을 때 대상 을 만 듭 니 다. 그러나 이 대상 은 임시 대상 이기 때문에 우 리 는 임시 대상 이 라 고 부 릅 니 다. 학술 이름 은 포장 대상 이 라 고 부 릅 니 다. 임시 적 인 것 은 우리 가 그 속성 을 읽 을 때 js 가 이 length 문자열 을 통과 하기 때 문 입 니 다 string.문자열 대상 을 만 드 는 방식 입 니 다. 대상 이 있 으 면 자 연 스 럽 게 속성 이 있 습 니 다. 그러나 이 대상 은 임시 적 인 것 일 뿐 인용 이 끝나 면 이 대상 은 삭 제 됩 니 다.
그리고 자 바스 크 립 트 권위 지침 서 의 한 마디 를 인용 하여 보충 합 니 다.
사실 (포장 대상) 실현 에 있어 서 반드시 이 임시 대상 을 만 들 거나 소각 하 는 것 은 아니 지만 전체 과정 은 이렇게 보인다.
마찬가지 로 숫자, 불 값 은 속성 을 읽 을 때 자신의 구조 함 수 를 통 해 자신의 임시 대상 을 만 들 고 대상 처럼 (하나의 대상)각자 의 속성 을 참조 하기 때문에 문자열, 숫자, 불 값 은 모두 대상 으로 볼 수 있 습 니 다. 주의 하 세 요. 여 기 는 대상 으로 볼 수 있 습 니 다. 그들 은 진정한 대상 이 아 닙 니 다. 즉, 엄 밀 히 말 하면 대상 이 대상 이 아 닙 니 다. 대상 은 가 변 적 이 고 속성 을 수정 할 수 있 기 때 문 입 니 다. 원시 값 은 변경 할 수 없 는 것 입 니 다 (위 를 보 세 요)그러나 그들의 포장 대상 과 대상 은 매우 비슷 해서 포장 대상 의 속성 을 읽 을 수 있 기 때문에 우 리 는 단지 대상 이 라 고 말 할 뿐이다.
하지만 주의 하 세 요.
생 성 된 것 은 임시 대상 일 뿐 쓰기 속성 은 임시 대상 에 만 존재 합 니 다. 인용 이 끝나 면 바로 지 워 집 니 다. 쓴 속성 도 자 연 스 럽 게 사라 지고 가죽 이 존재 하지 않 습 니 다. 털 이 붙 는 것 이 바로 이 이치 입 니 다. 생 성 된 임시 대상 은 속성 만 읽 을 수 있 고 속성 을 쓸 수 없습니다. 관심 있 는 것 은 속성 을 부여 한 다음 에 이 속성 을 읽 어 볼 수 있 습 니 다. 몇 가 지 를 절약 하기 위해 서 입 니 다.바이트 의 유량, 예 는 여기에 쓰 지 않 는 다.string & new String()
그럼 nullundefined 는 요? 계속 만 져 보 겠 습 니 다.
먼저 null, undefined 는 하나 null 로 '빈 값' 을 표시 하고 우 리 는 null 에 대해 조작 을 수행 하 며 수출 결 과 는 null 이기 때문에 우 리 는 typeof 을 특별한 대상 으로 볼 수 있다. 이 대상 은 '빈 대상' (갑자기 백마 비 마 론 이 생각 났 다) 을 나타 낸다. 설령 '빈 대상' 이 라 하 더 라 도.이 친구 들 은 이해 할 수 있 습 니 다.
그 다음 에 object, null 는 다른 '빈 값' 을 표시 하 는 특수 값 입 니 다. 이것 은 정의 되 지 않 았 음 을 표시 합 니 다. 변수 에 대해 초기 화 되 지 않 았 다 고 만 설명 할 때 출력 은 undefined 입 니 다. 우리 가 존재 하지 않 는 속성 을 인용 할 때 출력 도 undefined 입 니 다.어린이 들 은 스스로 검증 할 수 있 지만 키워드 가 아니 라 변수 이 며 전역 변수 입 니 다. 검증 할 수 있 습 니 다.
alert(undefined in window)

출력:
true

결 과 는 undefined 전체 변수 임 을 증명 했다.
마찬가지 로 undefined 유형 을 살 펴 보 자. undefined 유형 은 수출 typeof 이다. 이 는 undefined 이 이 유형의 유일한 구성원 임 을 엄 격 히 나타 낸다. 한 마디 로 undefined 유형 undefinednull 이지 만 typeof 자체 유형의 유일한 구성원 이 라 고 생각한다. 그러나 object 포장 대상 이 없 으 며 null 유형 도 undefined 이 아니다.상대 와 는 아무런 연고 도 없 기 때문에 나 는 그것 을 대상 으로 보지 않 는 다.
매듭 을 짓다
물론 이상 은 간단 한 설명 일 뿐 입 니 다. 깊 은 곳 으로 물 을 파 는 것 도 많 습 니 다.자 바스 크 립 트 의 모든 것 은 대상 이거 나 대상 으로 볼 수 있 습 니 다. 물론 이 건 가족의 말 일 뿐 입 니 다. 아이들 이 자신의 이 해 를 나 누 는 것 도 환영 합 니 다. 제 가 가 겠 습 니 다. 시간 이 되 었 으 니 낮잠 을 자야 합 니 다. 샤 양 나라.
보충 내용
2015/8/23
9 층 네티즌 manxisuo 는 typeof 판단 object 으로 인쇄 undefined 할 것 이 라 고 밝 혔 다. 이에 대해 이 해 를 말 하 겠 다.
  • console. log (type: of null) 는 true 이 고 console. log (null instanceof Object) 는 false 입 니 다.
  • 1. 인 스 턴 스 of 는 인용 유형 을 판단 하 는 데 사용 되 며, null 은 다섯 가지 기본 유형 중 하나 로 인 스 턴 스 of 로 기본 유형 을 판단 하 는 것 은 모두 false 로 돌아 가 는 것 이 라 고 생각 합 니 다. 이것 은 비교적 직접적인 원인 이 라 고 생각 합 니 다.
  • 2. 두 번 째 해석 은 사실 옳지 않다 고 생각 합 니 다. 하지만 저도 그렇게 이해 한 적 이 있 기 때문에 함께 꺼 내 보 겠 습 니 다. 인 스 턴 스 of 는 인용 유형 인지 아 닌 지 를 판단 하 는 인 스 턴 스 입 니 다. null 은 빈 인용 이지 object 가 예화 된 것 이 아니 기 때문에 false 를 출력 합 니 다. 또한 null 은 자신 만 을 포함 하 는 기본 유형 이기 때문에 특수 해 야 합 니 다.대하 다
  • 3. 첫 번 째 해석 을 보 세 요.
  • PS: 10 층 블 로 거들 도 이런 답장 내용
  • 저자: myvin 원문 출처:http://www.cnblogs.com/myvin/p/4660138.html전재 작가 님 과 출처 를 설명해 주세요. -... -
    다음 편: '부 트 스 트랩 입 회 - 네 비게 이 션 란 편'
    다음으로 전송:https://www.cnblogs.com/myvin/p/4660138.html

    좋은 웹페이지 즐겨찾기