둘러보기 메뉴
검색
바뀐글
임의글
개인 도구
가입하기
로그인
도움말
도움말
질문게시판
자주 묻는 질문
커뮤니티
실시간 채팅방
가입인사게시판
자유게시판
뉴스게시판
제재안게시판
최근 토론
페미위키
공지사항
개선 요청
바뀐글
임의글
파일 올리기
다면 분류 목록
특수 문서 목록
OOjs 문서 원본 보기
이름공간
문서
토론
주시
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
위키베이스 항목
행위
보기
읽기
원본 보기
역사 보기
←
OOjs
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요.
요청한 명령은 다음 중 하나의 권한을 가진 사용자에게 제한됩니다:
사용자
,
Seeders
.
문서를 고치려면 이메일 인증 절차가 필요합니다.
사용자 환경 설정
에서 이메일 주소를 입력하고 이메일 주소 인증을 해주시기 바랍니다.
문서의 원본을 보거나 복사할 수 있습니다.
'''OOjs'''는 [[객체 지향 프로그래밍]]을 위한 [[자바스크립트]] [[라이브러리]]이다. 거의 [[미디어위키]]를 위해 개발된 듯 미디어위키 개발자들이 주로 만들었다. 미디어위키의 자바스크립트는 대부분 OOjs를 사용한다. == 특징 == [[보일러 플레이트]]가 매우 심하다, 예를 들어 아무것도 상속받지 않는 Foo 클래스를 선언한다면 다음이 필요하다.<syntaxhighlight lang="javascript"> function Foo() { // 초기화 } OO.initClass( Foo ); </syntaxhighlight>이 Foo 클래스를 상속받는 Bar 클래스를 선언하려면 다음이 필요하다. <syntaxhighlight lang="javascript"> function Bar( config ) { Bar.super.call( this, config ); } OO.inheritClass( Bar, Foo ); </syntaxhighlight> 클래스 안에서 정적 변수나 정적 함수를 생성할 때 이름을 굉장히 길게 적어야 한다. Baz 클래스와 정적 변수, 정적 함수를 선언하면 이렇다. <syntaxhighlight lang="javascript"> Baz = funtion() { // 초기화 }; // 정적 변수 선언와 초기화 Baz.static.data = 'something'; // 정적 함수 선언 Bar.static.say = function() { // 정적 함수에서 정적 변수에 접근하기. console.log( 'I have ' + this.constructor.static.data + '!'); } </syntaxhighlight> 그런데 클래스 바깥에서 정적 멤버에 접근하는 문법은 또 다르다. 위에서 선언한 Bar의 work 함수에 접근한다면 다음과 같이 적는다. <syntaxhighlight lang="javascript"> Bar.static.say(); </syntaxhighlight> [[OOUI]]와 같은 라이브러리에서 정의된 클래스들을 사용할 때는 네임스페이스 같은 계층 구조를 저 위부터 죽 써야 한다. 예를 들어 버튼 위젯을 상속받고 싶다면 다음과 같이 적는다. <syntaxhighlight lang="javascript"> function Buz( config ) { OO.ui.ButtonWidget.call( config ); } OO.inheritClass( Buz, OO.ui.ButtonWidget ); </syntaxhighlight> 그리고 내가 만든 클래스도 어딘가 네임스페이스가 있어야 하므로 실제로는 다음과 같이 적는다. 문서도 열심히 적어야 한다.<syntaxhighlight lang="javascript"> ext.myExtension = ext.myExtension || {}; /** * ... * * @class * @extends OO.ui.ButtonWidget * * @constructor * @param {object} config ... * @cfc ... * @cfc ... */ ext.myExtension.Buz = function ExtMyExtensionBuz( config ) { // Parent constructor OO.ui.ButtonWidget.call( config ); } /* Initialization */ OO.inheritClass( ext.myExtension.Buz, OO.ui.ButtonWidget ); </syntaxhighlight> 보일러 플레이트 많은 [[Java]]로 위 코드를 비슷하게 쓴다 해도 훨씬 짧고 덜 힘들다. <syntaxhighlight lang="java"> package ext.myExtension; import OO.ui.ButtonWidget; /** * ... */ public class Buz extends ButtonWidget { /** * ... * @param config ... */ public static ButtonWidget( Config config ) { super(config); } } </syntaxhighlight> == 링크 == * [https://doc.wikimedia.org/ OOjs core 문서] * npm _ [https://www.npmjs.com/package/oojs oojs] * gerrit - https://gerrit.wikimedia.org/r/p/oojs/core [[분류:성격/자바스크립트 라이브러리]]
OOjs
문서로 돌아갑니다.
다른 언어