var obj = {length:0,splice:function( ){} }
console.log(obj)
위에 무엇이 인쇄될지 추측해 보세요.
예, 인쇄된 내용은 빈 배열처럼 보입니다. . .
FIREBUG에서는 객체에 길이 속성과 splice 메소드가 모두 있는 경우 Firebug에 의해 배열로 표시됩니다. . .
이전에 주목했다면 JQUERY가 이렇게 작성되어 선택기를 통한 출력이 배열과 동일하게 보이는 것을 알 수 있습니다.
마오가 반환하는 배열이 늘 궁금했는데, 배열에는 전혀 없는 메소드도 있고, pop 등 배열이 가져야 할 메소드도 없습니다.
마지막으로 제가 정보를 확인하다보니 이런 흥미로운 현상을 발견하게 되었습니다. .
그러나 IE에서 출력되는 것은 정상적인 [Object Object]입니다.
그러니까 이렇게 놀면 됩니다. . . .
var push = Array.prototype.push;
var splice = Array.prototype.splice;
var a = function() {
var a = function(name) {
return new a.fn.init(name)
}
a.fn = a.prototype;
a.fn.init = function(name) {
var arr = document.getElementsByTagName(name);
merge(this,arr); > }
a.fn.splice = splice;
a.fn.init.prototype = a.fn;
return a;
}()
함수 병합(첫 번째, 두 번째) {// jquery에서 병합 메서드를 완전히 복사합니다. - -
var i = first.length || 0, j = 0
if( typeof second.length === "number") {
for (var l = second.length; j < l; j ) {
first[i ] = second[j]
}
} else {
while(second[j] != = 정의되지 않음) {
first[i ] = second[j ];
}
}
first.length = i
첫 번째 반환; .css = function(pop, val) {
for(var i = 0; i < this.length; i ) {
if(this[i].nodeType===1){
this[i ].style[pop] = val;
}
}
return this
}
var ab = a('div')
ab.css( 'BackgroundColor' , '#444444').css('borderWidth', '2px').css('borderStyle', 'solid')
따라서 jquery의 카피캣 버전은 tagName 선택기와 유일한 Copycat CSS 메소드 라이브러리가 탄생했습니다. .