JavaScript 정리 노트 (4)

13109 단어 JavaScript
1.3 함수
1.3.1 함수 개체
자 바스 크 립 트 의 함수 도 대상 입 니 다.함수 대상 은 Function. prototype 에 연결 되 어 있 으 며, 이 원형 대상 자 체 는 Object. prototype 에 연결 되 어 있 습 니 다.모든 함수 대상 은 생 성 할 때 prototype 속성 이 있 습 니 다.그것 의 값 은 constructor 속성 을 가지 고 이 함수 의 대상 입 니 다.
function a(){};
a.prototype.constructor;  // function a(){}

함수 의 차이 점 은 그것 이 호출 될 수 있다 는 것 이다.
a(); //     a

1.3.2 편지 숫자 면 량
함수 대상 은 편지 숫자 면 을 통 해 만 듭 니 다:
var reduce = function(a, b){
	return a - b;
}

1.3.3 호출
4 가지 호출 모드:
  • 방법 호출 모드
    함수 가 대상 의 속성 으로 저 장 될 때 대상 이 라 고 부 르 는 방법 입 니 다.호출 되 었 을 때 this 가 이 대상 에 연결 되 었 습 니 다.
    var obj =  {
    	sum: 0,
    	add: function(num){
    		this.sum += num || 1;
    	}
    }
    obj.add();
    obj.sum; // 1
    obj.add(2);
    obj.sum; // 3
    

    this 를 통 해 이 대상 의 상하 문 방법 을 공공 방법 이 라 고 부른다.
  • 함수 호출 모드
    함수 가 대상 의 속성 이 아 닐 때 이 함 수 는 함수 로 호출 됩 니 다:
    function add(a, b){
    	return a + b;
    }
    var sum = add(1, 2);
    sum; // 3
    

    이 모드 에서 함 수 를 호출 할 때 this 는 전역 대상 에 연 결 됩 니 다.이것 은 언어 설계 상의 잘못 이다.우 리 는 보통 변 수 를 정의 해서 this 를 할당 합 니 다.보통 that 또는this。
    obj.add2 = function(){
    	var that = this;
    	var a = function(){
    		that.sum = add(that.sum, that.sum);
    	}
    	a(); // 6
    	var b = function(){
    		this.sum = add(this.sum, this.sum);
    	}
    	b(); // undefined     sum undefined
    }
    obj.add2();
    
  • 구조 기 호출 모드
    구조 함수 약속 은 대문자 로 함 수 를 명명 하 는 함수 로 new 를 통 해 호출 되 지만 new 를 추가 하지 않 아 도 경고 하지 않 습 니 다. 이것 은 매우 아 픕 니 다.위 에 new 를 추가 하여 호출 할 때 이 함수 에 연 결 된 prototype 구성원 의 새 대상 을 기본적으로 만 들 고 this 도 이 새 대상 에 연 결 됩 니 다.
    var Fn = function(value){
    	this.value = value;
    };
    Fn.prototype.getValue = function(){
    	return this.value;
    }
    var fn = new Fn(1001);
    fn.getValue(); // 1001
    
  • apply 호출 모드
    apply 방법 은 호출 함수 에 매개 변수 배열 을 구축 합 니 다.this 값 도 선택 할 수 있 습 니 다.
    var arr = [1, 2];
    var sum = add.apply(this, arr);
    sum; // 3
    var sum2 = add.apply(null, arr);
    sum2; // 3
    
    var o = {
    	value: 2002
    };
    var value = Fn.prototype.getValue.apply(o);
    value; // 2002
    // apply    this    o ,       this.value   o.value;
    

  • 1.3.4 모든 함수 가 정 의 된 형식 매개 변 수 를 제외 하고 추가 적 인 두 개의 매개 변 수 를 받 습 니 다.
  • this - 값 은 호출 모드
  • 에 달 려 있 습 니 다.
  • arguments - 함수 의 실제 매개 변수 개 수 는 배열 과 유사 하지만 배열
  • 이 아 닙 니 다.
    1.3.5 함수 호출 시 함수 매개 변수 개수 가 일치 하지 않 으 면 실행 오류 가 발생 하지 않 습 니 다. 많은 매개 변 수 는 무시 되 고 적은 매개 변 수 는 기본적으로 undefined 입 니 다.
    function add3(a, b, c) {
    	console.log("" + a + b + c);
    }
    add3(1, 2, 3, 4); // 123
    add3(1, 2); // 12undefined
    

    제 블 로그 에 오신 것 을 환영 합 니 다 Amazhe --- 내용 과 개인 정리, 잘못 이 있 으 면 지적 을 환영 합 니 다.감사합니다

    좋은 웹페이지 즐겨찾기