> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 디자인 패턴 중 하나인 인터페이스 인터페이스

JavaScript 디자인 패턴 중 하나인 인터페이스 인터페이스

高洛峰
풀어 주다: 2016-11-25 11:09:22
원래의
1551명이 탐색했습니다.

JavaScript를 작성하기 위해 객체지향적 사고를 사용하는 방법은 초보자에게 어려울 것입니다. 우리가 자주 사용하는 JQuery는 실제로 객체지향적 사고를 캡슐화하고 있으므로 Javascript에서 인터페이스를 사용하는 방법을 살펴보겠습니다. C#이나 Java에는 인터페이스와 같은 키워드가 있지만 JavaScript에는 해당 메커니즘이 없습니다. 그러나 Javascript는 인터페이스를 모방하기 위해 매우 유연합니다. 확인 작업을 수행하는 몇 가지 방법.
다음 인터페이스의 역할을 살펴보겠습니다.

이 인터페이스를 상속받는 경우 이 인터페이스에 정의된 메서드(메서드 서명)를 구현해야 합니다.

//JavaScript는 할 수 없습니다. 아직 메소드 서명에 대한 제약
var 인터페이스 = 함수(이름, 메소드) 다만       2"); 

} 

this.Name = 이름; 

this.Method = []; 

for (var i = 0; i

if(typeofmethod[i]!= = string) {

throw new Error("메서드 이름이 문자열이 아닙니다.") this.Method.push(methods[i])

}

}

/*인터페이스의 정적 메서드*/

Interface.ensureImplement = function (object) {

if (arguments.length < 2 ) {

새로운 오류 발생("인터페이스나 인스턴스가 없습니다.");

}                                                   > ~                                                    ) {                                                      

현재 접근 방식은 인스턴스의 메서드 이름이 인터페이스에 정의되어 있는지 비교하는 것입니다.

먼저 인터페이스(2개의 매개변수)를 정의하고, 두 번째 매개변수는 인터페이스의 메소드 이름입니다. Check 메서드는 간단한 2단계 for 루프를 사용하여 비교 작업을 수행합니다.

이 인터페이스를 사용하는 방법을 살펴보겠습니다.

var Person = new Interface("Person", ["GetName", "GetAge"]); var Man = function (name, age) { this. Name = 이름; this.Age = age; } Man.prototype = { GetName: function () { return this.Name }, // GetAge: function () { return this.Age } } var test = function; ) {                 Interface.ensureImplement(instance, Person);         var name = instance.GetName();           실행 중에 오류가 발생합니다. 구현을 보장할 때 이 메서드가 구현되지 않은 것을 발견했습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿