1. 원래 값과 참고 값
원래 값은 스택에 저장되고 참조 값은 힙에 저장됩니다. 예를 들어 프로그램은
var num = 10;
var bol = true;
var str = "abc";
var obj = new Object();
var arr = ['a','b ','c'];
var person = new Person(100,"바보의 좌우명",25);
2.정의되지 않음 및 null
정의되지 않음: 변수가 정의되지 않았습니다. 정의되지 않은 유형의 독점 값입니다.
null: 참조가 할당되지 않으며 Null 유형의 배타적 값입니다.typeof(undefine)== undefine;
typeof(null) == 객체;
undefine==null;
undefine!==null;
null 인스턴스of 객체 == false;
정의되지 않은 객체 인스턴스 == false;
경고(정의되지 않은 인스턴스);
경고(Null의 null 인스턴스);
3. 의사 배열
특징:1) 길이 속성이 있습니다.
3) 푸시, 팝, 슬라이스 등 배열별 데이터 조작 방법이 없습니다...
의사 배열은 Array.prototype.slice를 통해 실제 배열로 변환할 수 있습니다.
var FaceArray = {0: 'a', 1: 'b', length: 2}//표준 의사 배열;
var realArray = Array.prototype.slice.call(fakeArray);
js의 유사 배열: 인수, node.childNodes, document.getElementsByTagName()...
IE의 문제: IE의 node.childNodes를 슬라이스로 변환할 수 없습니다.
Jquery의 의사 배열: Jquery 자체는 의사 배열입니다.
alert($('.class1').length); 경고($('.class1').[0].tagName); 4. 단순형 리터럴에 대하여
var a = 1; b = true, c = "ccc";
리터럴에 유형이 있는 것처럼 보입니다
alert(typeof a);//number
alert(typeof b);//booleanalert(typeof c);//string
그러나 인스턴스 오브를 통해서는 측정할 수 없습니다
alert(숫자 인스턴스)//false
alert(객체 인스턴스)//falsealert(b 인스턴스of Boolean)//false
alert(b 인스턴스of객체)//false
alert(c 인스턴스ofString)//false
alert(c 인스턴스ofObject)//false
각 함수(생성자)에는 프로토타입 속성이 있고, 각 객체 인스턴스에는 생성자 프로토타입 속성을 가리키는 보이지 않는(Mozilla가 공개하고 __proto__를 통해 얻을 수 있음) 내부 프로토타입 속성이 있습니다. 프로토타입 체인을 구성하는 자체 프로토타입 속성입니다. Object가 최상위 개체이므로 모든 프로토타입 체인은 결국 Object.prototype을 가리킵니다. 개체 인스턴스의 속성/메서드에 액세스할 수 없으면 개체 인스턴스 자체에서 검색을 시작합니다. 찾을 수 있으면 Object.prototype.prototype == null이 될 때까지 프로토타입 체인을 따라 위쪽으로 검색하세요.
6. 생성자의 작은 비밀7. 객체 생성 과정
p:
◦ 내장 객체 obj를 생성하고 초기화합니다.
◦ p의 내부 [[Prototype]]을 Person.prototype으로 지정합니다.
◦ p를 사용하고 인수 매개변수를 사용하여 Person의 내부 [[Call]] 메서드를 호출합니다. 즉, Person 함수 본문을 실행하고 반환 값을 반환합니다.
◦ 이전 단계에서 Object 유형을 반환한 경우 이 값을 p로 반환하고, 그렇지 않으면 obj를 반환합니다.
8. 객체의 소유 및 상속 속성
9. 함수 객체 생성 과정
내장 객체 fn을 생성합니다.fn의 내부 [[Prototype]]을 Function.prototype으로 설정합니다.
함수 호출 논리를 처리하는 내부 구현 메서드인 내부 [[Call]] 속성을 설정합니다. (간단히 함수 본문을 가리키는 것으로 이해);
fn.length를 funArgs.length로 설정합니다. 함수에 매개변수가 없으면 fn.length를 0으로 설정합니다.
fn.prototype의 생성자는 fn 자체를 가리킵니다.
fn으로 돌아가기
10.Instanceof의 원리
A가 B의 인스턴스인지 확인하려면 B의 프로토타입이 가리키는 객체(생성자의 프로토타입 속성)가 a의 프로토타입 체인에 있는지 확인해야 합니다.
11. 기능과 대상에 대한 추측
alert(함수의 함수 인스턴스);//truealert(Object의 함수 인스턴스);//true
alert(함수의 개체 인스턴스);//true
alert(Object의 개체 인스턴스);/ /참