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