Rev. 2.73

Andrew Dupont씨를 비롯한 Prototype 개발팀은 Prototype 1.7 RC1을 릴리즈했습니다. 기본 셀렉터 엔진을 Sizzle로 교체했으며, 새로운 layout/dimensions API를 제공하고 관련 메서드들이 추가되었습니다. 그리고 셀렉터 엔진은 라이브러리를 빌드할 때 선택할 수 있도록 되어있습니다. 아래와 같은 빌드 명령으로 NWMatcher로 변경할 수 있습니다.

rake dist SELECTOR_ENGINE=nwmatcher

Element#on

새롭게 추가된 메서드인 Element#on은 event의 생성 및 삭제를 더욱 간결하고 쉽게합니다. 물론 종전과 같이 Element#observe를 사용해도 무방합니다.

/* Prototype 1.6 */
start: function() {
  this.clickHandler = function(event) {
    // ...
  };

  $("messages").observe("click", this.clickHandler);
},

stop: function() {
  $("messages").stopObserving("click", this.clickHandler);
}

/* Prototype 1.7 */
start: function() {
  this.clickHandler = $("messages").on("click", function(event) {
    // ...
  });
},

stop: function() {
  this.clickHandler.stop();
}

Element.Layout

요소의 치수 및 옵셋을 관리하기 위한 Element.Layout 클래스가 추가되었습니다. Element#measure, Element#getLayout 메서드를 제공하며, 사용방법은 다음과 같습니다.

/* The simple case */
$('troz').measure('width'); //-> 150
$('troz').measure('border-top'); //-> 5

// Offsets, too:
$('troz').measure('top'); //-> 226

/* The complex case */
var layout = $('troz').getLayout();

layout.get('width');  //-> 150
layout.get('height'); //-> 500

layout.get('padding-left');  //-> 10
layout.get('margin-left');   //-> 25
layout.get('border-top');    //-> 5
layout.get('border-bottom'); //-> 5

layout.get('padding-box-width'); //-> 170
layout.get('border-box-height'); //-> 510

layout.get('width');  //-> 150

이 밖에 자체적으로 제공하고 있는 JSON 변환 기능이 ECMAScript 5를 준수하도록 수정하였다고 합니다.

Comments