var obj = {length:0,splice:function( ){} }
console.log(obj)
上に何が出力されると思いますか?
はい、出力されるものは空の配列のように見えます。 。 。
FIREBUG では、オブジェクトが length 属性と splice メソッドの両方を持つ場合、Firebug によって配列として表示されます。 。 。
以前に注意したことがある方は、JQUERY が次のように記述されており、セレクターを介した出力は配列と同じように見えることがわかります。
Mao が返す配列についてずっと気になっていたのですが、配列にまったくないメソッドがあったり、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;
}()
関数 merge(first, Second) {// jquery のマージ メソッドを完全にコピーします - -
var i = first.length || 0, j = 0;
if( typeof Second.length === "number") {
for (var l = Second.length; j first[i ] = Second[j];
}
} else {
while(second[j] != = 未定義) {
first[i ] = Second[j ];
}
}
first.length = i;
a.fn .css = function(pop, val) {
for(var i = 0; i < this.length; i ) {
if(this[i].nodeType===1){
this[i ].style[pop] = val;
}
}
これを返します;
var ab('div'); 'backgroundColor' , '#444444').css('borderWidth', '2px').css('borderStyle', 'solid')
したがって、jquery のコピーキャット バージョンは、 tagName セレクターとのみ copycat CSS メソッドのライブラリが誕生しました。 。