Javascript 类似jQuery的体系结构
我试图在我的应用程序中创建一个类似jQuery的体系结构,但我无法得到预期的结果 在jQuery中,“jQuery对象实际上只是init构造函数‘增强’” 这意味着当您启动jQuery对象时Javascript 类似jQuery的体系结构,javascript,jquery,architecture,reverse-engineering,Javascript,Jquery,Architecture,Reverse Engineering,我试图在我的应用程序中创建一个类似jQuery的体系结构,但我无法得到预期的结果 在jQuery中,“jQuery对象实际上只是init构造函数‘增强’” 这意味着当您启动jQuery对象时 $('selector') jQuery返回 new jQuery.fn.init( selector, context, rootjQuery ); jQuery原型定义为 jQuery.fn = jQuery.prototype = { constructor: jQuery, init: func
$('selector')
jQuery返回
new jQuery.fn.init( selector, context, rootjQuery );
jQuery原型定义为
jQuery.fn = jQuery.prototype = {
constructor: jQuery,
init: function( selector, context, rootjQuery ) {
var match, elem, ret, doc;
...
return jQuery.makeArray( selector, this ); // An array
}
...
size: function() {
return this.length;
},
...
jQuery的所有有用属性和方法(如hide()、show()exct.)都由jQuery对象的原型持有
init方法的原型指定为jQuery的原型
jQuery.fn.init.prototype = jQuery.fn;
嗯!。我的问题是我试图使用这个架构,但是我无法获得返回值的属性和方法
这是我的密码
(function() {
Metinler = function(MetinKodu){
return new Metinler.sub.baslat( MetinKodu );
}
Metinler.sub = Metinler.prototype = {
metinKodlari: [],
constructor: Metinler,
topla: function(){
return this.metinKodlari[0] + this.metinKodlari[1];
},
baslat: function(MetinKodu) {
if($.isArray(MetinKodu) && MetinKodu.length > 0) {
this.metinKodlari = MetinKodu;
}else{
this.metinKodlari = (MetinKodu) ? [MetinKodu] : [''];
}
return this.metinKodlari;
}
}
Metinler.sub.baslat.prototype = Metinler.sub;
window.Metinler = Metinler;
})()
您的
baslat
功能有故障:
- 您在
中拼错了MetinKodu.lenght>0
length
- 您返回的是
数组,而您应该返回新创建的metinKodlari
上下文。jQuery使用this
上的this
将传递的DOM元素像jQuery对象一样存储在数组中。但是,在您的情况下,您只需要将传递的元素存储在makeArray
数组中,而不是存储在metinKodlari
对象本身上这个
baslat: function(MetinKodu) {
if ($.isArray(MetinKodu) && MetinKodu.length > 0) {
this.metinKodlari = MetinKodu;
} else {
this.metinKodlari = (MetinKodu) ? [MetinKodu] : [''];
}
return this;
}
您看到的问题是,构造函数返回了一个特定的值:
return this.metinKodlari;
。。。它返回您的内部数组(您可以使用数组的数组)
删除此行,您将返回baslat
实例
return this.metinKodlari;