이 글은 JavaScript의 바인드 메소드에 대한 코드 예제를 제공합니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
전화, 신청 및 신규는 이전에 구현되었습니다. 그건 그렇고, 바인딩은 오늘날에도 구현됩니다.
우선:
좋아, 코드로 가보자~
Function.prototype.mybind = function(context){ let that = this; let args1 = Array.prototype.slice.call(arguments,1); let bindFn = function(){ let args2 = Array.prototype.slice.call(arguments); return that.apply(this instanceof bindFn?this:context,args1.concat(args2)); } let Fn = function(){}; Fn.prototype = this.prototype; bindFn.prototype = new Fn(); return bindFn; }
우선 매개변수 args1을 처음으로 전달받았는데 이를 가로채야 한다. 여기서 첫 번째 매개변수가 이것이기 때문입니다. 다음으로, 두 번째로 전달된 매개변수 args2를 획득하고 해당 실행을 반환하는 함수 binFn이 선언됩니다. 여기서 "that"은 원래 기능을 실행하고 원래 기능인 "this"를 바인딩할 때 판단에 주의하세요. 이것이 생성자 binFn new에 의해 생성된 인스턴스라면 여기서는 인스턴스 자체여야 합니다. 반대로, 바인드 메소드에 의해 전달된 것은 this(context)입니다. 마지막으로 concat()을 통해 두 번 얻은 매개변수를 연결하고 전달하면 처음 세 항목이 구현됩니다.
마지막 항목: 생성자의 속성과 메서드는 각 인스턴스에서 사용할 수 있습니다. 여기서 중간 함수 Fn은 프로토타입 체인을 연결하는 데 사용됩니다. Fn의 프로토타입은 이것의 프로토타입과 같습니다. Fn과 this는 동일한 프로토타입 객체를 가리킵니다. BindFn의 프로토타입은 Fn의 인스턴스와 동일합니다. Fn 인스턴스의 __proto__는 Fn의 프로토타입을 가리킵니다. 즉, binFn의 프로토타입은 이와 동일한 프로토타입을 가리키며, 동일한 프로토타입 객체를 가리킵니다. 이 시점에서는 자체 바인딩 메서드를 구현했습니다.
코드가 작성되었으니 테스트해보겠습니다~
Function.prototype.mybind = function(context){ 그것을 = 이것으로 하자; args1 = Array.prototype.slice.call(arguments,1); 바인딩Fn = function(){ args2 = Array.prototype.slice.call(arguments); return that.apply(bindFn의 이 인스턴스?this:context,args1.concat(args2)); } Fn = function(){}; Fn.prototype = this.prototype; binFn.prototype = new Fn(); BindFn을 반환합니다. } obj = {라고 놔두세요 이름:'호랑이' } 함수 fn(이름,나이){ This.say = '우우우우우~'; console.log(this); Console.log(this.name+'키운 사람'+name+','+age+'세'); } /**처음으로 매개변수 전달*/ 바인딩Fn = fn.mybind(obj,'
위 내용은 JavaScript의 바인드 메소드 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!