Object는 Prototype에서 네임스페이스로 사용됩니다. 즉, 네임스페이스 액세스(예: "Object"로 시작)를 위한 몇 가지 새로운 메서드를 함께 유지합니다.
위에 언급된 네임스페이스에 대한 개인적인 이해는 동일합니다. to C#의 도구 기능 제공을 의미하는 의 정적 클래스는 C#의 네임스페이스와 동일한 개념이 되어서는 안 됩니다. C#의 네임스페이스는 메소드 바로 뒤에 오지 않기 때문에 객체여야 하고 메소드를 호출해야 하지만 C의 네임스페이스
clone
extend
inspect
isArray와 다소 유사합니다.
isElement
isFunction
isHash
isNumber
isString
isUndefine
keys
toHTML
toJSON
toQueryString
values
//익명 함수 호출로 객체 객체 생성
( function() {
//타입의 문자열 표현식을 가져옵니다. (프로토타입 학습 - 도구 함수 학습($ 메소드)) 이 로그에 자세한 지침이 있습니다.
function getClass(object) {
return Object.prototype.toString.call(object)
.match(/^[objects(.*)]$/)[1];
}
//상속된 메서드, 매우 simple 클래스 복사 메커니즘은 소스의 모든 속성과 메서드를 대상에 복사하는 것입니다. 참조 유형인 경우 소스와 대상은 동일한 주소를 가리킵니다.
function extend(destination, source) {
for ( 소스의 var 속성)
destination[property] = source[property];
return Destination;
}
//객체의 문자열 표현식 반환
함수 검사 (object ) {
try {
if (isUndefine(object)) return 'undefine';
if (object === null) return 'null';
return object.inspect ? 검사( ) : String(객체);
} catch (e) {
if (e instanceof RangeError) return '...'
throw e; >
//객체의 JSON 반환(JavaScript 객체 표기법)
function toJSON(object) {
var type = typeof object;
switch(type) {
case 'undefine':
케이스 '함수':
케이스 '알 수 없음': return;
케이스 '부울': return object.toString()
if (object === null ) return ' null';
if (object.toJSON) return object.toJSON();
if (isElement(object)) return;
for (객체의 var 속성) {
var value = toJSON(object[property]);
if (!isUndefine(value))
results.push(property.toJSON() ': ' value);
}
return '{' results.join(', ') '}'
}
//쿼리 문자열 반환(예: param1=value1¶m2) =value2
function toQueryString(object) {
return $H(object).toQueryString()
}
//HTML 문자열 반환
function toHTML(object); 🎜> return object && object.toHTML ? object.toHTML() : String.interpret(object)
}
//객체의 모든 키 가져오기
functionkeys(object) {
var results = [];
for (객체의 var 속성)
results.push(property);
return results
//모든 값 가져오기 of object
function value(object) {
var results = [];
for(객체의 var 속성)
results.push(object[property])
return results; 🎜>}
//객체의 모든 속성과 메서드를 빈 객체에 복사하고 return
function clone(object) {
return extend({ }, object);
//객체가 기본 DOM 요소인지 확인
function isElement(object) {
return !!(object && object.nodeType == 1)
}
//객체가 배열인지 판단
function isArray(object) {
return getClass(object) === "Array"
}
//객체가 배열인지 판단 is 프로토타입 해시 객체
function isHash(object) {
return object instanceof Hash
}
//객체가 함수인지 확인
function isFunction(object) {
return typeof object === "function";
}
//객체가 문자열인지 확인
function isString(object) {
return getClass(object) === " String";
}
//객체가 숫자인지 확인
function isNumber(object) {
return getClass(object) === "Number";
}
//객체가 정의되었는지 확인
function isUndefine(object) {
return typeof object === "undefine"
}
//객체 객체 반환
extend( Object, {
extend: 확장,
검사: 검사,
toJSON: toJSON,
toQueryString: toQueryString,
toHTML: toHTML,
키: 키,
값: 값,
클론: 클론,
isElement: isElement,
isArray: isArray,
isHash: isHash,
isFunction: isFunction,
isString: isString ,
isNumber: isNumber ,
isUndefine: isUndefine
})
})();
검사 방법:
코드 복사
코드는 다음과 같습니다.
Object.inspect() // -> '정의되지 않음'
Object.inspect(null) // -> 'null'
Object.inspect(false) // -> 'false'
Object.inspect([1, 2, 3]) // -> '[1, 2, 3]'
Object.inspect('hello') // -> hello'"
toJSON 메서드: 재귀 호출 프로세스가 있다는 점에 유의하세요. var value = toJSON(object[property]); 그리고 마지막으로 JSON 형식 문자열을 반환합니다. 표현, 예를 살펴 보겠습니다.
var data = {이름: '보라색', 직업: '캐릭터', 나이: 25세, 애완동물: ['개구리', '토끼']}
/* '{"name": "보라색", " 직업": " 문자", "나이": 25, "애완동물": ["frog","토끼"]}' */
//eval이 JSON 문자열을 반환할 때 괄호를 추가해야 한다는 점을 기억하세요. 그렇지 않으면 오류가 발생합니다. 여기서 괄호는 평가를 강제하는 역할을 합니다.
//그렇지 않으면 JSON 문자열이 복합문으로 간주되어 내부의 ("name":)이 Label로 간주되어 다음 내용을 파싱할 때 오류가 발생합니다.
var obj =eval('(' Object.toJSON (data) ')');
alert(obj.name);
toQueryString 메소드: Hash 객체를 객체로 처리한 후 Hash 객체 toQueryString 메서드를 호출하고 호출 결과를 반환합니다. Hash 객체에 대해 이야기할 때 toQueryString 메서드에 대해 자세히 설명합니다.
일반적으로 이 메서드는 Ajax.Request를 호출할 때 자주 사용됩니다. 예를 살펴보겠습니다.
Object.toQueryString({ action: 'ship', order_id: 123, fee: ['f1', 'f2'], 'label': 'adem' } )
// -> 'action=ship&order_id=123&fees=f1&fees=f2&label=a deco'
toHTML 메소드: 객체 매개변수가 전달된 경우 정의되지 않았거나 null인 경우 빈 문자열을 반환합니다.
alert(Object.toHTML())
alert(Object.toHTML(null))
객체가 toHTML 메소드를 정의하는 경우 객체의 toHTML 메소드를 호출하고, 그렇지 않으면 call String의 정적 메서드 해석은 실제로 개체가 null인지 여부를 판단합니다. null이면 ''을 반환합니다. 그렇지 않으면 개체의 toString 메서드를 호출하고 호출 결과를 반환합니다
Object.extend(String, {
interpret: function(value) {
반환 값 == null ? '' : 문자열( 값)
},
specialChar: {
'b': '\b',
't': '\t',
'n': '\n',
'f': '\f',
'r': '\r',
'\': '\\'
}
});
아래 예를 살펴보세요.
var Bookmark = Class.create({
initialize: function(name, url) {
this.name = name;
this.url = url
},
toHTML : function() {
return '
#{name }'.interpolate(this);
}
})
var api = new Bookmark('Prototype API', 'http://prototypejs.org/api');
Object.toHTML(api)
//- > '
프로토타입 API'
키와 값 메서드: 예제를 보시면 이해가 되실 테니 자세히 설명하지 않겠습니다. :
Object.keys()
// -> []
Object.keys({ 이름: '프로토타입', 버전: 1.5 }). sort()
// -> ['이름', '버전']
Object.values()
// -> []
Object.values({ name: 'Prototype ', version: 1.5 }).sort()
// -> 프로토타입']
복제 방법: '{} '는 빈 객체의 직접적인 수량으로, new Object()
var o = { 이름: 'Prototype', 버전: 1.5, 작성자: ['sam', 'contributors'] };
var o2 = Object.clone(o);
o2.version = '1.5 이상함'
o2.authors.pop(); o.version // -> 1.5
o2.version // -> '1.5 이상한'
o.authors // -> ['sam']
// 아야! , 여기에 주목하세요!
isXXX 메소드에 대해서는 언급하지 않겠습니다.