JavaScript 면접 문제 총화 시리즈 (2)

2682 단어 자바 script
2. 자 바스 크 립 트 대상
2.1 내장 대상
  • Object 는 JavaScript 의 모든 대상 의 부모 대상 입 니 다.
  • 데이터 패 키 징 대상: Object, Array, Boolean, Number, String;
  • 기타 대상: Function, Arguments, Math, Date, RegExp, Error, JSON, 전역 대상;

  • 2.2 대상 을 정의 하 는 방식
  • 대상 글자 의 양: var obj = {};
  • 구조 함수: var obj = new Object ();
  • Object.create(); var obj = Object.create(Object.prototype);

  • 2.3 new 방식 과 글자 의 양 을 통 해 대상 을 만 드 는 것 과 차이 점
  • 글자 의 양 을 통 해 대상 을 만 들 고 Object () 구조 함 수 를 호출 하지 않 으 며 소개 와 성능 이 좋 습 니 다.
  • new 연산 자 를 통 해 대상 을 만 들 때 Object () 구조 함 수 를 호출 해 야 합 니 다. 본질 적 으로 방법 호출 입 니 다. 와 관련 됩 니 다.proto__체인 에 이 방법 을 옮 겨 다 니 며 방법 을 찾 으 면 호출 방법 에 필요 한 스 택 정보 가 생 길 수 있 습 니 다. 방법 이 끝 난 후에 스 택 을 풀 어야 합 니 다. 성능 에 있어 서 는 글자 의 양 을 사용 하여 대상 을 만 드 는 것 이 좋 습 니 다.

  • 2.4 두 대상 이 서로 같다 고 판단 하 는 방법
    문자열 로 변환 하여 판단 할 수 있 습 니 다.예:
    obj = {
        a: 1,
        b: 2
    }
    obj2 = {
        a: 1,
        b: 2
    }
    obj3 = {
        a: 1,
        b: '2'
    }
    
    JSON.stringify(obj) == JSON.stringify(obj2);//true
    JSON.stringify(obj) == JSON.stringify(obj3);//false

    2.5 new 연산 자
    new 연산 자 를 호출 하 는 과정 에서 다음 과 같은 네 가지 절 차 를 실 행 했 습 니 다.
  • 대상 을 새로 생 성 합 니 다.
  • 원형 으로 연결:
  • let obj = new Object();
    let Con = [].shift.call(arguments);
    obj.__proto__ = Con.prototype

    3. 귀속: apply;4. 새로운 대상 으로 돌아 가기;
    한 마디 로 말 하면:
    new 연산 자 는 빈 대상 을 새로 만 들 었 습 니 다. 이 대상 의 원형 은 구조 함수 의 prototype 을 가리 키 며 구조 함 수 를 실행 한 후 이 대상 으로 돌아 갑 니 다.
    2.6 얕 은 복사 와 깊 은 복사
  • 무엇이 얕 은 복사 이 고 무엇이 깊 은 복사 입 니까?

  • 얕 은 복사 와 깊 은 복사, 여 기 는 보통 한 대상 A 를 다른 변수 B 에 할당 하 는 것 을 말한다.A 가 수정 할 때 B 도 따라서 변화 하면 이것 이 바로 얕 은 복사 이 고 B 가 변화 가 없 으 면 이것 을 깊 은 복사 라 고 한다.
  • 얕 은 복사 가 어떻게 이 루어 질 수 있 습 니까
  • 대상 을 변수 에 직접 할당 하 는 방식 으로 얕 은 복사 가 가능 합 니 다.예:
    let a = [1, 2, 3];
    let b = a;
    a[0] = 4;
    b[0] // 4
  • 깊이 복사 하면 1. Object. assign () 을 어떻게 실현 할 수 있 습 니까?예 를 들 어
  • let a = {
        age: 1
    }
    let b = Object.assign({}, a)
    a.age = 2
    console.log(b.age) // 1

    2. 연산 자 를 펼친다.예:
    let a = {
        age: 1
    }
    let b = {...a}
    a.age = 2
    console.log(b.age) // 1

    3. JSON 방법:
    주로 JSON. parse () 와 JSON. stringify () 의 조합 을 통 해 깊 은 복사 가 이 루어 집 니 다.예:
    let a = {
      age: 1,
      jobs: {
        first: 'FE'
      }
    }
    let b = JSON.parse(JSON.stringify(a))
    a.jobs.first = 'native'
    console.log(b.jobs.first) // FE

    4. jQuery 의 extend () 방법 은 현재 프로젝트 에서 jQuery 를 사용 하 는 것 이 상대 적 으로 적 기 때문에 사용 할 때 이 API 를 따로 찾 을 수 있 습 니 다.5. 이것 은 주로 대상 을 대상 으로 하 는 요소 가 1 차원 요소 가 아니 라 요소 자체 도 대상 이나 배열 일 수 있 고 심지어 서브 요소 의 서브 요소 도 대상 이나 배열 일 때 근본적으로 깊 은 복사 를 실현 한다.

    좋은 웹페이지 즐겨찾기