jqueryソースノート2-初期化関数
3960 ワード
まず関数を見て
for inの場合、オブジェクトのプロパティ(プロトタイプのプロパティを含む)を繰り返します.たとえば、次のようなコードがあります.
このとき何が出力されますか?もちろん0:1 1:2 2:3ですがfor inの前にArrayを付けるとprototype.say = “hello”; 再実行すると何が出力されますか?0:1 1:2 2:3 say:hello
見たでしょう、この時、それは原型の属性を出力します多くの時、私たちはその原型の属性を遍歴する必要はありません.もう一つの原因は、私たちが今使っているオブジェクト、私たちは保証できません.他の開発者は、その原型にいくつかの属性を加えていますか?では、オブジェクトのプロパティをフィルタしましょう.このときhasOwnPropertyメソッドを使用しました.次のようにします.
二、初期化関数
ソースコードには次のように書かれています.
一目でこれを見た私は愚かだった......第二にこれを见ると私はまだ愚かです......いいえ、まずこれを簡略化しなければなりません.
1、私達の正常な考え方によってこのように書くべきです
jqueryではこう書いてあることはよく知られています
jQueryが返すべきはインスタンスオブジェクトだと想像できます.そう書けば、理解しやすいです.
jQueryソースコードにはこう書かれています
WTF!!!
for inの場合、オブジェクトのプロパティ(プロトタイプのプロパティを含む)を繰り返します.たとえば、次のようなコードがあります.
var array = [];
array.push(1);
array.push(2);
array.push(3);
for(var i in array) {
console.log(i+":"+array[i]);
}
このとき何が出力されますか?もちろん0:1 1:2 2:3ですがfor inの前にArrayを付けるとprototype.say = “hello”; 再実行すると何が出力されますか?0:1 1:2 2:3 say:hello
見たでしょう、この時、それは原型の属性を出力します多くの時、私たちはその原型の属性を遍歴する必要はありません.もう一つの原因は、私たちが今使っているオブジェクト、私たちは保証できません.他の開発者は、その原型にいくつかの属性を加えていますか?では、オブジェクトのプロパティをフィルタしましょう.このときhasOwnPropertyメソッドを使用しました.次のようにします.
for(var i in array){
if(array.hasOwnProperty(i)) {
console.log(i+":"+array[i]);
}
}
二、初期化関数
ソースコードには次のように書かれています.
jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context, rootjQuery );
},
一目でこれを見た私は愚かだった......第二にこれを见ると私はまだ愚かです......いいえ、まずこれを簡略化しなければなりません.
1、私達の正常な考え方によってこのように書くべきです
var jQuery = function(){
}
jQuery.prototype = {
name : function(){};
age : function(){};
}
var jq = new jQuery();
jq.name();
jqueryではこう書いてあることはよく知られています
jQuery.name();
jQueryが返すべきはインスタンスオブジェクトだと想像できます.そう書けば、理解しやすいです.
var jQuery = function(){
return new init();
}
jQuery.prototype = {
name : function(){};
age : function(){};
}
var init = function(){
}
init.prototype = jQuery.prototype;
jQueryソースコードにはこう書かれています
var jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context, rootjQuery );
}
jQuery.fn = jQuery.prototype = {
init: function( selector, context, rootjQuery ) {}
}
jQuery.fn.init.prototype = jQuery.fn;
WTF!!!