Prototype.js 의 Object 객체의 메소드
페이지 정보
작성자 MintState 댓글 0건 조회 13,496회 작성일 10-01-19 11:38본문
Prototype.js 의 Object 객체의 메소드
1. Object.extend
A 라는 원본 개체가 가지고 있는 프로퍼티를 B라는 대상 개체에 복사합니다. 반환은 B 를 돌려 줍니다.
예제를 보시면 개에다가 새의 프로퍼티들을 복사 합니다.
개에 나는 기능이 추가되고 원본(dog) 개체가 가지고 있던 프로퍼티인 sound 가 bird 개체의 sound 로 덮어 씌워집니다.
2. Object.inspect
디버그를 할수 있도록 문자열을 리턴합니다. 사실 자바스크립트 코어 메소드인 toString 을 사용할수도 있으나 toString 은 보통 개발자가 보고 싶어하는 유용한 정보를 보여주지 않습니다.
때문에 이 메소드를 사용합니다. 유저가 직접 만든 객체에도 inspect 메소드를 추가한다면 마찬가지로 노출해 줍니다.
순서 대로 결과는
[1, 2]
'hello javascript'
#<Hash:{'a1': '3', 'a2': function () {
return "4";
}, 'a3': [object Object]}>
i am nice guy
를 리턴합니다. prototype.js 가 가지고 있는 개체인 Hash, Enumerable 의 내용을 확인 할수도 있습니다.
3. Object.toJSON
json 형식으로 리턴합니다.
순서대로 결과는
[1, 2]
"hello javascript"
{"a1": "3", "a3": {"b1": "1"}, "a4": [1, 2]}
{"name": "nice guy"}
입니다.
Array , String , Number 형 등은 그냥 바로 리턴 해 버리고 객체 안에서의 Array, String, Number 형은 Json 의 키와 값으로 설정 됩니다.
undefined, function , unknown 등은 패스 해버립니다. (userMake 개체의 inspect 메소드를 패스해버린걸 봐도 알수 있습니다)
4. Object.toQueryString
queryString 형식의 값으로 반환 합니다.
e.x) name=niceguy&height=200&weight=80
5. toHTML
해당 객체의 toHTML 을 호출 합니다. toHTML 메소드가 존재 하지 않으면 Sting 의 interpret 메소드를 호출 합니다.
결과는 <a href="http://prototypejs.org/api">Prototype API</a> 입니다.
6. clone
빈 개체에 개체의 프로퍼티를 복사합니다.
실제 내부적으론 Object.extend 를 사용합니다.
대상 개체의 프로퍼티를 빈객체에 복사한다 정도입니다.
7. 기타
ps. 출처 : http://run2you.tistory.com/32
1. Object.extend
A 라는 원본 개체가 가지고 있는 프로퍼티를 B라는 대상 개체에 복사합니다. 반환은 B 를 돌려 줍니다.
var dog = {
sound : function(){
return 'bark bark';
}
}
var bird = {
sound : function (){
return 'jack jack';
},
fly : function(){
return 'fly fly';
}
}
Object.extend(dog, bird);
alert(dog.sound());
alert(dog.fly());
예제를 보시면 개에다가 새의 프로퍼티들을 복사 합니다.
개에 나는 기능이 추가되고 원본(dog) 개체가 가지고 있던 프로퍼티인 sound 가 bird 개체의 sound 로 덮어 씌워집니다.
2. Object.inspect
디버그를 할수 있도록 문자열을 리턴합니다. 사실 자바스크립트 코어 메소드인 toString 을 사용할수도 있으나 toString 은 보통 개발자가 보고 싶어하는 유용한 정보를 보여주지 않습니다.
때문에 이 메소드를 사용합니다. 유저가 직접 만든 객체에도 inspect 메소드를 추가한다면 마찬가지로 노출해 줍니다.
var arr = [1,2];
var str = 'hello javascript';
var hash = $H({
a1 : '3',
a2 : function(){
return '4'
},
a3 : {
b1 : '1'
}
});
var userMake = {
name : 'nice guy',
inspect : function(){
return 'i am '+ this.name;
}
};
alert(Object.inspect(arr));
alert(Object.inspect(str));
alert(Object.inspect(hash));
alert(Object.inspect(userMake));
순서 대로 결과는
[1, 2]
'hello javascript'
#<Hash:{'a1': '3', 'a2': function () {
return "4";
}, 'a3': [object Object]}>
i am nice guy
를 리턴합니다. prototype.js 가 가지고 있는 개체인 Hash, Enumerable 의 내용을 확인 할수도 있습니다.
3. Object.toJSON
json 형식으로 리턴합니다.
var arr = [1,2];
var str = 'hello javascript';
var hash = $H({
a1 : '3',
a2 : function(){
return '4'
},
a3 : {
b1 : '1'
},
a4 : [1, 2]
});
var userMake = {
name : 'nice guy',
inspect : function(){
return 'i am '+ this.name;
}
}
alert(Object.toJSON(arr));
alert(Object.toJSON(str));
alert(Object.toJSON(hash));
alert(Object.toJSON(userMake));
순서대로 결과는
[1, 2]
"hello javascript"
{"a1": "3", "a3": {"b1": "1"}, "a4": [1, 2]}
{"name": "nice guy"}
입니다.
Array , String , Number 형 등은 그냥 바로 리턴 해 버리고 객체 안에서의 Array, String, Number 형은 Json 의 키와 값으로 설정 됩니다.
undefined, function , unknown 등은 패스 해버립니다. (userMake 개체의 inspect 메소드를 패스해버린걸 봐도 알수 있습니다)
4. Object.toQueryString
queryString 형식의 값으로 반환 합니다.
e.x) name=niceguy&height=200&weight=80
5. toHTML
해당 객체의 toHTML 을 호출 합니다. toHTML 메소드가 존재 하지 않으면 Sting 의 interpret 메소드를 호출 합니다.
var Bookmark = Class.create({
initialize: function(name, url) {
this.name = name;
this.url = url;
},
toHTML: function() {
return '<a href="#{url}">#{name}</a>'.interpolate(this);
}
});
var api = new Bookmark('Prototype API', 'http://prototypejs.org/api');
alert(Object.toHTML(api));
결과는 <a href="http://prototypejs.org/api">Prototype API</a> 입니다.
6. clone
빈 개체에 개체의 프로퍼티를 복사합니다.
실제 내부적으론 Object.extend 를 사용합니다.
대상 개체의 프로퍼티를 빈객체에 복사한다 정도입니다.
7. 기타
Object.extend = function(destination, source) {
/*
source 객체의 프로퍼티를 destination 개체의 프로퍼티로 복사 합니다.
리턴은 destination 을 돌려줍니다.
prototype.js 소스를 보시면 Array.prototype 처럼 prototype 을 복사 하기도 합니다.
*/
for (var property in source)
destination[property] = source[property];
return destination;
};
Object.extend(Object, {
inspect: function(object) {
try {
if (Object.isUndefined(object)) return 'undefined';
if (object === null) return 'null';
return object.inspect ? object.inspect() : String(object);
/*
해당 개체의 inspect 메소드가 존재하면 inspect 메소드를 뿌려주며 존재 하지 않을시 String 형으로 반환 합니다.
개발자가 생성한 객체의 경우 inspect 메소드를 지정함으로써 디버깅시 용이하게 만들수 있습니다.
*/
} catch (e) {
if (e instanceof RangeError) return '...';
throw e;
}
},
toJSON: function(object) {
var type = typeof object;
switch (type) {
case 'undefined':
case 'function':
case 'unknown': return;
case 'boolean': return object.toString();
}
/*
(undefined , function, unkown) type 일시 json 형으로 만들지 않고 넘어가며 boolean 형일경우 'true', 'false' 형의 문자로 return 해줍니다.
*/
if (object === null) return 'null';
// null 은 'null' 문자로 리턴해줍니다.
if (object.toJSON) return object.toJSON();
// 해당 객체가 toJSON 메소드가 지정되었을시 메소드를 실행한 값을 리턴해 줍니다.
if (Object.isElement(object)) return;
// nodeType 이 1 즉 속성일시 그냥 넘어갑니다.
var results = [];
for (var property in object) {
var value = Object.toJSON(object[property]);
if (!Object.isUndefined(value))
results.push(property.toJSON() + ': ' + value);
}
/*
객체가 넘어 왔을시 해당 객체를 돌면서 해당객체의 프로퍼티중 JSON 으로 쓸만한 녀석들만 배열에 넣은뒤 아래에서 JSON 타입으로 반환해 줍니다.
*/
return '{' + results.join(', ') + '}';
},
});
ps. 출처 : http://run2you.tistory.com/32
|
|
댓글목록
등록된 댓글이 없습니다.





Prototype.js 의 Object 객체의 메소드