아저씨 읽 고 자 바스 크 립 트 깊이 이해 하기 (1)

9111 단어 JavaScript
1. delete 는 속성 만 삭제 할 수 있 습 니 다. var 성명 의 변 수 는 삭제 할 수 없습니다.
주의:
var 를 통 해 만 든 전역 변수 (함수 이외 의 프로그램 에서 만 든 것) 는 삭제 할 수 없습니다.
var 가 만 들 지 않 은 암시 적 전역 변 수 는 삭제 할 수 있 습 니 다.
var a = (function(){return this;}()); //return globa object
a == window   //return true

m = 1;    //          ,         window           
a.m  //return 1
delete m;
a.m //return undefined

 특례: eval ("var t = 1"), 이러한 방식 의 성명 은 문맥 에 따라 현재 역할 도 메 인 변 수 를 표시 하고 delete 에서 삭제 할 수 있 습 니 다.eval 추천 하지 않 음
2. 단일 var 의 응용 (쉼표 로 분할)
var a = 1,
       b = [],
       str = 'daxian',
       obj = {};

 
3. javascript 의 예비 해석 var 산포 문제 (Hoisting: A Problem with Scattered vars)
변 수 를 사용 하고 얼마 지나 지 않 아 함수 에서 다시 설명 하면 논리 적 오류 가 발생 할 수 있 습 니 다.자바 스 크 립 트 에 대해 서 는 변 수 를 같은 역할 영역 (같은 함수) 에 있 으 면 모두 설명 으로 여 겨 집 니 다. var 성명 전에 사용 하 더 라 도.아래 의 이 예 를 보 세 요.
x = 'globa'      //      
function func1(){
      console.log(x)   
}
func1();        //return globa;

function func(){
       console.log(x)      //return undefined
       var x = 'local';
       console.log(x)     //return local;
}
func2()      

DOM 대상 가 져 오기 삽입:
document.getElementById
document.getElementsByName
document.getElementsByTagName
document.getElementsByClassName

// DOM        

document.images      //          
document.links           //          
document.forms         //        
document.forms[0].element   //          

주의:for-in 순환 은 비 배열 대상 의 옮 겨 다 니 는 데 사용 되 어야 하 며, for-in 순환 을 사용 하 는 것 도 '매 거 진' 이 라 고 불 린 다.
기술적 으로 는 순환 배열 for-in 을 사용 할 수 있 지만 추천 하지 않 습 니 다.배열 대상 이 사용자 정의 기능 이 강화 되면 논리 적 오류 가 발생 할 수 있 기 때문이다.또한, for - in 에 서 는 속성 목록 의 순서 (서열) 를 보장 할 수 없습니다.따라서 배열 은 정상 적 인 for 순환 을 사용 하고 대상 은 for - in 순환 을 사용 하 는 것 이 좋 습 니 다.
 
4. hasOwnProperty 원형 필터 링 방법
var man = {name:'jzliu',age:21,birth:'2012-08-01'};
if(typeof Object.prototype.clone === 'undefined'){
        Object.prototype.clone = function(){};
}

for(var i in man){conosle.log(i+":"+man[i])}
return 
name:jzliu
age:21
birth:2012-08-01
clone:function (){}

for(var i in man){
      if(man.hasOwnProperty(i)){   //           
             conosle.log(i+":"+man[i])
      }
}
return 
name:jzliu
age:21
birth:2012-08-01

   g    
for(var i in man){
      if(Object.prototype.hasOwnProperty.call(man,i)){
             conosle.log(i+":"+man[i])
      }
}

return 
name:jzliu
age:21
birth:2012-08-01

 
5.setTimeout(function(){Fun(a,b,c);},1000)
6.return {'name':'xxxxx'}
7. 함수 성명 과 함수 표현 식 의 차이 (성명 은 먼저 해 석 됩 니 다)
함수 설명: function funName (param,...) {}
함수 식: function funName [선택 가능] () {}
따라서 함수 이름 을 밝 히 지 않 으 면 표현 식 이 분명 합 니 다. 함수 이름 을 밝 혔 다 면 함수 성명 인지 함수 표현 식 인지 어떻게 판단 합 니까?ECMAScript 는 상하 문 을 통 해 구 분 됩 니 다. function foo () {} 이 할당 식 의 일부분 이 라면 함수 표현 식 입 니 다. function foo () {} 이 함수 에 포함 되 거나 프로그램의 맨 위 에 있 으 면 함수 성명 입 니 다.
function foo(){} //
  var bar = function foo(){}; //

  new function bar(){}; //    ,    new   

  (function(){
    function bar(){} //
  })();

또 하나의 함수 표현 식 은 흔 하지 않 습 니 다. 괄호 로 묶 인 (function foo () {} 입 니 다. 그 가 표현 식 인 이 유 는 괄호 () 가 그룹 연산 자 이기 때 문 입 니 다. 그 내 부 는 표현 식 만 포함 할 수 있 습 니 다. 우 리 는 몇 가지 예 를 보 겠 습 니 다.
function foo(){} //     
(function foo(){}); //

표현 식 과 성명 은 매우 미묘 한 차이 가 있 습 니 다. 우선, 함수 성명 은 모든 표현 식 이 해석 되 고 값 을 구하 기 전에 먼저 해석 되 고 값 을 구 합 니 다. 코드 의 마지막 줄 에 있 더 라 도 같은 역할 영역 에서 첫 번 째 표현 식 이 해석 되 기 전에 값 을 구 합 니 다.
if (true) {
    function foo(){ return 1; }
  }
  else {
    function foo(){ return 2; }
  }
  foo(); // 1
  //  :       foo        
  //   ,   foo      ,    2,   1

8. 개인 적 인 방법 과 변 수 는 var 로 설명 합 니 다.
9.(function(){xxxx}())
10. 원형 체인 계승 실현
11. 폐쇄

좋은 웹페이지 즐겨찾기