this & arguments

2072 단어
  • this는 숨겨진 첫 번째 매개 변수이며 일반적으로 대상(대상이 아니면 의미가 없어 보인다)
      function f(){
          console.log(this)
          console.log(arguments)
      }
      f.call() // window
      f.call({name:'frank'}) // {name: 'frank'}, []
      f.call({name:'frank'},1) // {name: 'frank'}, [1]
      f.call({name:'frank'},1,2) // {name: 'frank'}, [1,2]
    
  • 통과함수를 호출합니다.call의 첫 번째 파라미터는this입니다. 만약 전달하지 않으면 기본값은 window입니다. 전달하는 파라미터가 대상이 아니라면 자동으로 대상 형식으로 변환됩니다. 한 마디로 하면this는 대상이어야 합니다![주의: 소문자 윈도인데 크롬 브라우저 범인 제이언은 대문자 윈도를 표시합니다.]
    ll은 첫 번째 파라미터를 제외하고 뒤에 있는 파라미터는arguments에 속합니다. 만약 전참하지 않으면arguments는 빈 그룹입니다.arguments는 위조수조이다.
    만약 당신이 콜로 함수를 호출하지 않는다면, 직접 f () 를 사용하십시오.예를 들어 f(1)이면 이 1은arguments에 넣는다.이때의this는 여전히 window이다. 비록 너는 하나의 매개 변수 1만 전달했지만.그러니까 써야 돼.f()는 초보자에게 우호적이지 않기 때문에 f()는 하지 마세요.call()은 오히려 생각이 더 뚜렷하다.
    함수마다 리턴이 있습니다. 리턴을 쓰지 않으면 리턴 undefined를 쓴 것과 같습니다.
  • this가 왜 대상이어야 하는지는this가 함수와 대상 간의 속박이기 때문
    var person = {
        name: 'frank',
        sayHi: function(person){
            console.log('Hi, I am' + person.name)
        },
        sayBye: function(person){
            console.log('Bye, I am' + person.name)
        },
        say: function(person, word){
            console.log(word + ', I am' + person.name)
        }
    }
    person.sayHi(person)
    person.sayBye(person)
    person.say(person, 'How are you')
    
    //   
    person.sayHi()
    person.sayBye()
    person.say('How are you')
    
    //  
    var person = {
        name: 'frank',
        sayHi: function(){
            console.log('Hi, I am' + this.name)
        },
        sayBye: function(){
            console.log('Bye, I am' + this.name)
        },
        say: function(word){
            console.log(word + ', I am' + this.name)
        }
    }
    //  
    person.sayHi.call(person)
    person.sayBye.call(person)
    person.say.call(person, 'How are you')
    
    //  :this   call  
    // this  , , 
    person.sayHi.call({name:'haha'})  //   sayHi   this   person  
    // this  
    
    //  
    var fn = person.sayHi
    person.sayHi() // this === person
    fn()  // this === window
    
  • 좋은 웹페이지 즐겨찾기