<script type="text/javascript">
//-------------prototype对instanceof的影响----------------
//使用new ABC()得到的东西继承了ABC的 prototype 的属性和方法
//instanceof 的逻辑:先判断对象属于哪个类,再看那个类的prototype
//1.没有return
var jQuery = window.jQuery = window.$ = function( selector, context ) {
};
jQuery.fn = jQuery.prototype = {
init:function(selector, context){
selector = selector || document;// 确定selector存在
if (selector.nodeType) {
this[0] = selector;
this.length = 1;
return this;
}
}
}
var kk = new $(); //kk属于$
alert(kk instanceof $.fn.init);//false
alert(kk instanceof $);//true
alert(kk instanceof Object);//true
//2.添加return会把new $()对象抛弃 使得var kk = new $(); 和 var kk = $();的效果一致
var jQuery = window.jQuery = window.$ = function( selector, context ) {
return new jQuery.fn.init( selector, context );
};
jQuery.fn = jQuery.prototype = {
init:function(selector, context){
selector = selector || document;// 确定selector存在
if (selector.nodeType) {
this[0] = selector;
this.length = 1;
return this;
}
}
}
var kk = new $(); //kk 属于jQuery.fn.init
alert(kk instanceof $.fn.init);//true
alert(kk instanceof $);//fasle
alert(kk instanceof Object);//true
//3.设置了prototype后 有没有return结果都一样
jQuery.fn.init.prototype = jQuery.fn;
//以下四个东西的内容一致
alert(jQuery.fn.init);
alert(jQuery.fn.init.prototype.init);
alert(jQuery.fn.init.prototype.init.prototype.init);
alert(jQuery.fn.init.prototype.init.prototype.init.prototype.init);
//所以 jQuery.fn.init.prototype = jQuery.prototype
var kk = new $(); //kk 属于jQuery.fn.init
alert(kk instanceof $.fn.init);//true
alert(kk instanceof $);//true
//-------------prototype对instanceof的影响----------------
//第一个括号里面是个匿名函数,第二个括号表示马上执行第一个括号里面的代码。
(function(id){
//-------创建对象------------
var TE = {}; //相当于TE=new Object();
alert(typeof Object); //function
alert(typeof Array);//function
//Js中特别的一个东西
alert(typeof Math);//Object 由于prototype只能用于function, Math.prototype这个会导致语法错误
//如何创建对象
//1.静态类,只有静态属性和静态方法 不能使用new
var DI = {
name:"name",
sex:"sex",
age:12,
dfunc:function(){
alert('dfunc');
},
}
//使用下面的方法添加静态属性和方法
DI.n2='n2';
DI['n3']='n3';
DI.f2=function(){}
DI['f3']=function(){}
//2.拥有动态、静态属性以及方法
//prototype称为类的原型,用来添加类的动态属性和方法,必须通过对象调用
//以下四种方式添加的都是动态的
function ClassTest(){
//(1).类内部
this.name1='name1';
this.func1=function(){
alert('func1');
}
//(2).类内部
ClassTest.prototype.name2='name2';
ClassTest.prototype.func2=function(){
alert('func2');
}
//(3).类内部
this['name3']='name3';
this['func3']=function(){
alert('func3');
}
}
var cct = new ClassTest();
//(4).类外部
ClassTest.prototype.name4='name4';
ClassTest.prototype.func4=function(){
alert('func4');
}
cct.func4();//执行成功,可见建立了对象后,再使用prototype,已建的对象也生效
//定义类的静态属性和方法,不能通过对象调用,直接使用类名.方法()调用
ClassTest.staticName='staticName';
ClassTest.staticFun=function(){
alert('staticFun');
};
ClassTest['staticName2']='staticName2';
ClassTest['staticFun2']=function(){
alert('staticFun2');
};
alert(typeof ClassTest); //function]
alert(ClassTest.prototype instanceof Object);//true
var CT = new ClassTest();//创建对象
alert(typeof CT); //object
//添加对象属性\方法
CT.name5 = 'name5';
CT.func5 = function(){
alert('func5');
}
CT['name6'] = 'name6';
CT['func6'] = function(){
alert('func6');
}
//-------创建对象------------
//---------命名空间-----------------用于理解类、对象与属性之间的关系
window.ClassTest = ClassTest; //window对象的属性ClassTest是个类ClassTest
window.CT = CT; //window对象的CT属性是个对象CT
alert(typeof window.CT); //object
alert(typeof window.ClassTest); //function
//这种情况理解为定义了KJ和window.KJ两个变量
window.KJ={};
alert(typeof window.KJ); //object
alert(typeof KJ); //object
//多层命名空间
window.CT.CT2=function(){};
alert(typeof window.CT.CT2);//object
//---------命名空间-----------------
})(12);
</script>
//以下都执行正常,说明cd,ab都是引用?
var cd = ab = {};
ab.func = function(){
alert(1);
}
cd.func();
cd.f2 = function() {
alert(2);
}
ab.f2();
this的含义
//---------函数方法中this的意义--------
var aa = window.aa= function(){
alert(this);
alert(this instanceof aa);
return 1;
}
aa(); //[Object window] false
new aa(); //[Object Object] true
aa.extend = function(){
alert(this);
}
aa.extend();//aa方法
new aa.extend();//[Object Object]
//---------函数方法中this的意义--------
//类中的this
var obj = {
func1 = function(){
alert(this);//只当前的obj对象
}
}
分享到:
相关推荐
使一个Dom对象成为一个Jquery对象很简单,通过下面一些方式(只是一部分): 代码 var a = $("#cid"); var b = $("<p>hello</p>"); var c = document.createElement("table"); var tb = $(c); 编辑本段代替body...
<script type="text/javascript" src="/jquery/jquery.js"> <script type="text/javascript"> $(document).ready(function(){ $("p").click(function(){ $(this).hide(); }); }); <p>If you click on me, I ...
通常,全局对象都被很好地存储在 jQuery 命名空间里,因此当把 jQuery 和其他 JavaScript 库(例如 Prototype、MooTools 或 YUI)一起使用时,不会引起冲突。 注意:默认情况下,jQuery 用 $ 作为自身的快捷方式。 1...
在Jquery中,$是JQuery的别名,所有使用$的地方也都可以使用JQuery来替换,如$(‘#msg’)等同于JQuery(‘#msg’...</span> script src = ” prototype.js ” type = ” text/javascript ” /> <</span> script src =
在Jquery中,$是JQuery的别名,...下面以引入两个库文件jquery.js和prototype.js为例来进行说明。 第一种情况:jquery.js在prototype.js之后进行引入,如:[removed] <script src=”jquery.js” type=”text/javascr
通过查看引用的js文件,我发现页面中不光引入了jquery.js,还引入了一个名为prototype.js的文件。 这个prototype.js之前未曾听说过,特意在百度上搜了一下,原来它也是一个js类库,功能和jquery差不多,而且很强大。...
1.命名空间: js里面的命名空间就是使用对象的... 但是有一种情况,比如:boke.jsp页面引入了jquery.js以及prototype.js(他们都会在window对象中添加$属性),这时就出现了冲突的情况。 因此jquery.js里面就有了
从这个版本开始,jQuery的性能达到了Prototype、Mootools以及Dojo等同类JavaScript库的水平。同年9月,jQuery 1.2版发布,它去掉了对XPath选择符的支持,原因是相对于CSS语法它已经变得多余了。这一版能够对效果进行...
$.fn是jquery的命名空间,如果对jquery源码有过学习,就不难发现源码中有如下代码: jquery.fn=jquery.prototype={ init:function(selector,context){ /* *code */ } } 所以说jquery.fn也就是jquery.prototype...
SWFUpload最初是由Vinterwebb.se开发的一个客户端的上传工具....• 采用了命名空间以兼容其它JS的库 (例如 jQuery, Prototype, 等等) • • 对FLASH 9和FLASH 10播放器的支持(V2.2.0版本放弃了对Flash 8的支持)
浏览器迫使我们使用文件输入控件(<input type=”file” />)做上传,然而此控件的样式是不能修改...Ajax Upload文件上传插件不会污染任何命名空间,所以它与jQuery,Prototypejs,mootools其他JavaScript库兼容。
从这个版本开始,jQuery的性能达到了Prototype、Mootools以及Dojo等同类JavaScript库的水平。同年9月,jQuery 1.2版发布,它去掉了对XPath选择符的支持,原因是相对于CSS语法它已经变得多余了。这一版能够对效果进行...
浏览器迫使我们使用文件输入控件(”file” />)做上传,然而此控件的样式是不能修改的。...Ajax Upload文件上传插件不会污染任何命名空间,所以它与jQuery,Prototypejs,mootools其他JavaScript库兼容。
主要集合了我写js时一些常用的方法,并参考了prototype.js,jquery,google,百度,有啊等框架。 工具库已经在近几个效果中使用:JavaScript 多级联动浮动菜单 (第二版) JavaScript 浮动定位提示效果 JavaScript ...
最新版说明文档--SWFUpload V2.2.0,更新时间:2008-11-07。... * 采用了命名空间以兼容其它JS的库 (例如 jQuery, Prototype, 等等) * 对FLASH 9和FLASH 10播放器的支持(V2.2.0版本放弃了对Flash 8的支持)
独立插件,不依赖第三方插件,比如jQuery、Prototype、Mootools等,只需要你引入插件文件即可使用。 默认主题使用一个图片文件,即上下按钮,所有的其它的效果均有CSS设计完成。 支持兼容现在大多数的浏览器,IE8...
此为SWFUpload与java集成的文件上传功能实例...采用了命名空间以兼容其它JS的库 (例如 jQuery, Prototype, 等等) 对FLASH 8和FLASH 9播放器的支持 对FLASH 9和FLASH 10播放器的支持(V2.2.0版本放弃了对Flash 8的支持)
采用了命名空间以兼容其它JS的库 (例如 jQuery, Prototype, 等等) 对FLASH8和FLASH9播放器的支持 SWFUpload背后的设计思想和其它基于Flash的上传工具是不同的。它将浏览器的中UI交给开发人员来控制。开发人员能够...
采用了命名空间以兼容其它JS的库 (例如 jQuery, Prototype, 等等) 对FLASH 8和FLASH 9播放器的支持 对FLASH 9和FLASH 10播放器的支持(V2.2.0版本放弃了对Flash 8的支持) SWFUpload背后的设计思想和其它基于Flash...