>  기사  >  웹 프론트엔드  >  javascript_javascript 스킬에 호출 적용 시나리오 적용

javascript_javascript 스킬에 호출 적용 시나리오 적용

WBOY
WBOY원래의
2016-05-16 16:03:431085검색

일부 jQuery 플러그인에서는 callback.call(xxx,xxx)과 같은 내용을 자주 볼 수 있습니다. 책에서 호출 및 적용 함수가 범위를 변경할 수 있다고 읽었지만 여전히 주요 목적을 완전히 이해할 수 없습니다. 어떤 문제가 해결되는지, 대안이 있는지 또는 이 두 기능이 주로 해결하려는 문제는 무엇인지, 응용 프로그램 시나리오는 언제 사용하는 것이 가장 적절한지 이런 코드를 읽을 때마다 현기증이 나고 선형 읽기에서 벗어나는 것이 약간 복잡한 느낌입니다

호출 및 적용 기능은 매우 간단합니다. 즉, 적용 가능한 시나리오가 너무 많습니다. 때로는 단지 "아름다움"을 위한 것일 수도 있지만, 제가 자주 사용하는 것은 다음과 같습니다.

1.

코드 복사 코드는 다음과 같습니다.
Object.prototype.toString.call(Obj)

Obj의 유형을 결정하는 데 사용됩니다

인수는 Array와 비슷하지만 Array의 push 방식이 없습니다. 어떻게 해야 하나요?
Array.prototype.push.call(인수)

3.Javascript에는 private 메소드라는 개념이 없어서 클로저를 이용하여 구현하고 싶습니다

(function () {
  var Person = function () {
    this.doSomeThing = function () {
      _privateFunction.call(this);
    }
  }

  var _privateFunction = function () {

  }

  window.Person = Person;

}).call(window);

콜백할 때 콜백의 컨텍스트를 현재 컨텍스트로 설정하려는 경우 call 또는 Apply를 사용할 수도 있습니다. 이점은 무엇인가요?

이때 콜백의 this는 현재 컨텍스트를 나타냅니다. 예를 들어 Person 클래스와 해당 메서드에는 콜백 매개변수가 있습니다. 이 콜백이 일반 대괄호를 통해 실행되는 경우 이 콜백에서 실행되는 person의 다른 메서드는 person.other를 사용하여 구현해야 하지만 이후에는 컨텍스트가 전환됩니다. 자, 이것으로 다 끝났습니다.other~ 코드 비교는 다음과 같습니다.

var Person = function(){

};

Person.prototype.say = function(callback){
  callback();
};

Person.prototype.other = function(){

};

var vincent = new Person();

vincent.say(function(){
  vincent.other();
});

사용된 통화:

var Person = function(){

};

Person.prototype.say = function(callback){
  callback.call(this);
};

Person.prototype.other = function(){

};

var vincent = new Person();

vincent.say(function(){
  this.other();
});

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.