JavaScript中的原型对象(以下为示例,有错误。)
JavaScript通过为所有函数绑定一个prototype属性用来指向一个原型对象。此原型对象可以定义类继承、属性和方法
<Script >
var jQuery = function(){
jQuery.prototype = {//扩展的原型对象
}
}
</script>
更安全的作法是,定义一个属性
<Script >
var jQuery.fn = jQuery.prototype = {//扩展的原型对象
}
</script>
这里的jQuery.fn相当于jQuery.prototpye的别名。那么
var $ = jQuery = function(){}
给jQuery添加两个成员
var $ = jQuery = function (){
jQuery.fn = jQuery.prototype = {
jquery: "1.2.3", //原型属性
size: function(){ //原型方法
return this.length;
}
}
}
调用方法:
正常调用方法为:
var my$ = new $();//实例化
alert( my$.jquery );
alert( my$.size() );
但jQuery却如下:
$().jquery;
$().size();
即,jQuery没有使用new运算符将jQuery类实例化。实际在浏览器使用这段代码会报错。没有实例化,那么
var $ = jQuery = function(){
return new jQuery();
}
然而,仍然会报错,堆栈溢出。说明有死循环。那么:
使用一个工厂方法来创建一个实例,并把它放到prototype原型对象中,然后在构造函数中返回这个调用。
var $ = jQuery = function() {
return jQuery.fn.init();
}
jQuery.fn = jQuery.prototype = {
init: function(){
return this;
},
jquery:"1.2.4",
size: function(){
return this.length;
}
}
以上示例还是有错误,它并没有实例化jQuery,那么要如何做?