Adrien Friggeri씨는 IE를 제외한 대부분의 브라우저에서 제공하는 진정한 get, set, catchall을 좋아해서, 예제를 보고 에뮬레이팅 계층을 작업했습니다:
from Emulating get, set, catchall for all browsers on Ajaxian
[code:js]
var o = CGSobject(function (x) { return x+1; });
// basic set
o("a", 7);
// basic get
print(o("a"));
// -> 7
// getter
o("b", {get: function () { return this.a+1;}});
print(o("b"));
// -> 8
// setter
o("c", {set: function (x) { this.a = x / 2 }});
o("c", 50);
print(o("a"));
// -> 25
// catchall
print(o(2));
// -> 3
print(o("foo "));
// -> "foo 1"
이를 위해 사용한 코드입니다:var o = CGSobject(function (x) { return x+1; });
// basic set
o("a", 7);
// basic get
print(o("a"));
// -> 7
// getter
o("b", {get: function () { return this.a+1;}});
print(o("b"));
// -> 8
// setter
o("c", {set: function (x) { this.a = x / 2 }});
o("c", 50);
print(o("a"));
// -> 25
// catchall
print(o(2));
// -> 3
print(o("foo "));
// -> "foo 1"
[code:js]
function CGSobject (catchall) {
var o = function (k,v) {
if (v) {
var curv = o.content[k];
(curv && curv.set && curv.set.call(o.content,v)) || (o.content[k] = v);
} else {
var v = o.content[k] || o.catchall(k);
return (v.get && v.get.call(o.content)) || v;
}
}
o.content = {};
o.catchall = catchall || function () { return null };
return o;
}
function CGSobject (catchall) {
var o = function (k,v) {
if (v) {
var curv = o.content[k];
(curv && curv.set && curv.set.call(o.content,v)) || (o.content[k] = v);
} else {
var v = o.content[k] || o.catchall(k);
return (v.get && v.get.call(o.content)) || v;
}
}
o.content = {};
o.catchall = catchall || function () { return null };
return o;
}
from Emulating get, set, catchall for all browsers on Ajaxian
'[IT] Web Tech' 카테고리의 다른 글
Canvas와 PNG를 이용한 압축 (2) | 2008.05.09 |
---|---|
It's Business Time : Google I/O로의 자유 이용권 (0) | 2008.05.08 |
Ajaxian Featured Tutorial : YSlow를 이용한 성능 분석 (0) | 2008.05.08 |
우리는 JavaScript 라이브러리 개발자들이다. 우리의 외침을 들어라! (0) | 2008.05.07 |
모든 브라우저를 위한 get, set, catchall 에뮬레이션 (0) | 2008.05.07 |
CSS로 호머 심슨 만들기 (0) | 2008.05.07 |
XSketch : GWT로 만든 Pictionary (0) | 2008.05.07 |
WriteMaps.com의 새로운 인쇄 미리보기 도구 (0) | 2008.05.07 |
애플 스토어의 새 효과 (0) | 2008.05.07 |
댓글을 달아 주세요