`

javaScript代码如何理解

    博客分类:
  • web
 
阅读更多
如下的JavaScript代码如何理解
(function($){})(jQuery);

其实比较简单,要理解几个概念:
1、(),在JavaScript里()表示执行一个方法,如:
function x(){
alert("xxx");
}
var a = x; // 没有调用,a 是一个function
var a = x(); //调用了函数,a 的值是调用的结果:undefined
2、jQuery是一个jQuery对象,表示调用函数时,传入一个参数是jQuery对象。
这个没什么好说的
3、(function($){})这是一个匿名函数,形参是$,括号是一定需要的。这样一看就懂了,上式相当于
var f = function($){};
f(jQuery);
所以,(function($){})(jQuery)这句的意思就是定义一个函数并立马执行它。

javascript使用大括号({})语法创建无类型对象
JavaScript 中的对象其实就是属性(方法)的一个集合,并没有严格意义的类的概念。所以
它提供了另外一种简单的方式来创建对象,即大括号({})语法:
{
property1:statement,
property2:statement2,
…,
propertyN:statmentN
}
通过大括号括住多个属性或方法及其定义(这些属性或方法用逗号隔开),来实现对象的定义,这段代码就直接定义个了具有n个属性或方法的对象,其中属性名和其定义之间用冒号(:)隔开。例如:
Javascript代码  
1.<script language="JavaScript" type="text/javascript">   
2.var obj={}; //定义了一个空对象   
3.var user={   
4.name:"jack", //定义了name属性,初始化为jack   
5.favoriteColor:["red","green","black","white"],//定义了颜色喜好数组   
6.hello:function(){ //定义了方法hello   
7.alert("hello,"+this.name);   
8.},   
9.sex:"male" //定义了性别属性sex,初始化为sex   
10.}   
11.//调用user 对象的方法hello   
12.user.hello();   
13.</script>  

第一行定义了一个无类型对象obj,它等价于:
var obj=new Object();
接着定义了一个对象user 及其属性和方法。注意,除了最后一个属性(方法)定义,其他的必须以逗号(,)结尾。其实,使用动态增减属性的方法也可以定义一个完全相同的user象。

jQuery.fn.extend(object)方法
jQuery.fn.extend(object):给jQuery对象添加方法。
fn 是什么东西呢。查看jQuery代码,就不难发现。

jQuery.fn = jQuery.prototype = {
   init: function( selector, context ) {//.... 
   //......
};

原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。例子
Javascript代码  
1.<html>   
2.<body>   
3.<div id = "div_1">欢迎</div>   
4.</body>   
5.</html>   
6.<script type="text/javascript" src="jquery.js"></script>   
7.<script type="text/javascript">   
8.(function($){   
9.    //一次性给jquery对象扩充多个方法或属性   
10.    $.fn.extend({   
11.        test : {   
12.            name : "张三",   
13.            sex : "男",   
14.            show : function(){   
15.                return "姓名:" + this.name + " 性别:" + this.sex;   
16.            }   
17.        },   
18.        money : 10000,   
19.        args : ["1","22","333",{args : ["4444","55555"],xiao : function(){alert("haahaaaa")}}]   
20.    });   
21.    //一次只给jquery对象扩充一个属性或方法   
22.    $.fn["abcd_aa"] = function(){   
23.        alert("abcd_aa");   
24.    };   
25.    $.fn["ccccc"] = "你好";   
26.    $.fn.xxx = function(){   
27.        alert("xxx");   
28.    };   
29.    $.fn.jjj = "你好jjj";   
30.       
31.    //一次性给jquery本身扩充多个方法或属性   
32.    $.extend({   
33.        abc : function(){alert("abc")},   
34.        efg : function(){alert("efg")}   
35.    });   
36.    //一次只给jquery本身扩充一个属性或方法   
37.    $.qq = function(){alert("hahahhahahahha")};   
38.    $["aqaq"] = function(){alert("aqaq")};   
39.  
40.    $["basePackage"] =  $["basePackage"] || {};   
41.    $["basePackage"]["fun"] = function(name){   
42.        //alert("basePackage.fun()方法")   
43.        this.name = name;   
44.    };   
45.    $["basePackage"]["fun"].prototype = {   
46.        _init : function(){alert("初始化方法,"+this.name)},   
47.        a : "a属性"  
48.    };   
49.    //var newObj = new $["basePackage"]["fun"]();   
50.    //newObj._init();   
51.    //alert(newObj.a);   
52.    new $["basePackage"]["fun"]("小sss")._init();   
53.  
54.    $.base = $.base || {};   
55.    $.base.fun = function(){alert("base.fun()方法")};   
56.})(jQuery);   
57.  
58./*alert($("#div_1").test.show());  
59.alert($("#div_1").money);  
60.alert($("#div_1").args[0]);  
61.alert($("#div_1").args[1]);  
62.alert($("#div_1").args[2]);  
63.alert($("#div_1").args[3].args[0]);  
64.alert($("#div_1").args[3].args[1]);  
65.alert($("#div_1").args[3].xiao());  
66.alert($("#div_1").ccccc);  
67.alert($.abc());  
68.alert($.efg());  
69.alert($("#div_1").xxx());  
70.alert($("#div_1").jjj);  
71.alert($.qq());  
72.alert($.aqaq());  
73.alert($.basePackage.fun());  
74.alert($.base.fun());*/  
75.</script>  

jQuery.extend(object)
当参数只有一个时,表示扩展jQuery类本身,为类添加新的方法。
Javascript代码  
1.<script type="text/javascript" src="jquery.js"></script>   
2.<script type="text/javascript">   
3.$.extend({   
4.    adda : function(){   
5.        return 5;   
6.    },   
7.    test_a : {   
8.        name : "lisi",   
9.        show : function(){   
10.            alert(this.name);   
11.        },   
12.        test_b : {   
13.            sex : "男",   
14.            getSex : function(){   
15.                return this.sex;   
16.            }   
17.        }   
18.    }   
19.});   
20.alert($.adda());   
21.$.test_a.show();   
22.alert($.test_a.test_b.getSex());   
23.</script>  

当参数有多个时(jQuery.extend(dest,src1,src2,src3...srcN)),表示将src1、src2...对象的属性和方法逐一复制给dest对象,需要注意的是,在复制的过程中,排在后面的参数(对象)将会覆盖排在前面的参数的属性和方法;
Javascript代码  
1.<script type="text/javascript" src="jquery.js"></script>   
2.<script type="text/javascript">   
3.var objA = { speed:"slow" };   
4.  
5.var objB = { speed:"fast", power:"hard" };   
6.  
7.var objD = { speed:"test", name:"zhangsan"};   
8.  
9.var objC = jQuery.extend(objA, objB, objD);   
10.  
11.document.write("<dt>objA");   
12.  
13.for (var p in objA) { document.write("<dd>" + p + "->" + objA[p]); }   
14.  
15.document.write("<dt>objC");   
16.  
17.for (var p in objC) { document.write("<dd>" + p + "->" + objC[p]); }   
18.</script>  

当参数有多个(jQuery.extend(boolean, dest,src1,src2,src3...srcN))并且第一个参数为Boolean类型时,当boolean=true时,表示深层拷贝。当boolean=false时,结果和上面一样。那么什么是深层拷贝了,运行上面的例子,发现objA和objC包含的属性完全相同。当改成var objC = jQuery.extend(true, objA, objB, objD)后,objA和objC也是一样。改成var objC = jQuery.extend(false, objA, objB, objD)后,objA和objC不同了。objA的属性没有增加,和以前一样。深层拷贝会将目标对象objA和新对象objC中没有的属性(方法)都拷贝到其中。
分享到:
评论

相关推荐

    JavaScript代码应该放在HTML代码哪个位置比较好?

    在哪里放置 JavaScript 代码? 通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代码放置在 HTML 文档的任何地方。但放置的地方,会对 JavaScript 代码的正常执行会有一定影响,具体如下所...

    Javascript代码美化工具

    JS Beauty 是一款 Javascript 美化工具,它具有美化,净化,压缩和解压缩 Javascript 代码等功能: 1. 美化:将混乱的 Javascript 代码格式化为优美的带缩进的格式,适合阅读和修改。 2. 净化:去掉 Javascript ...

    javascript经典特效---javascript代码自动生成.rar

    JavaScript是一种广泛应用于网页和网络应用的编程语言,...而“javascript代码自动生成.htm”文件可能提供了关于如何利用这些概念和工具的具体指导,包括实例和教程,以帮助你更好地理解和实践JavaScript代码生成技术。

    JavaScript函数(源代码)

    JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)JavaScript函数(源代码)...

    javascript网站广告代码大全

    通过学习和理解这些JavaScript广告代码,开发者可以掌握如何在自己的网站上创建和优化广告,同时提升网站的用户体验和商业价值。对于网页设计师和前端开发者来说,熟练掌握这些技术是提升专业技能的重要途径。这个...

    Javascript Obfuscator代码混淆

    JavaScript Obfuscator是一种工具,主要用于保护JavaScript代码,通过将源代码转换为难以理解的形式,以防止未经授权的用户查看、修改或盗窃代码。在Web开发中,尤其对于那些包含商业逻辑或者敏感信息的JavaScript...

    javascript代码和网页演示

    这个名为"javascript代码和网页演示"的资源集合,显然是为了帮助初学者或开发者深入理解JavaScript在实际网页中的应用,通过源码分析和效果展示来提升技能。 首先,JavaScript的核心知识点包括变量、数据类型、控制...

    编写可靠的javascript代码测试驱动开发javascript商业软

    资源名称:编写可靠的JAVAscript代码 测试驱动开发JAVAscript商业软件内容简介:《编写可靠的Javascript代码 测试驱动开发Javascript商业软件》分为5个部分:第Ⅰ部分“奠定坚实的基础”...

    javascript代码大全

    通过学习和实践“JavaScript代码大全”中的各种示例和特效代码,开发者不仅可以深化对JavaScript的理解,还能提升实际项目开发的能力。无论你是初学者还是经验丰富的开发者,这个资源都能提供宝贵的学习材料。

    javascript源代码下载

    通过阅读源代码,开发者可以深入理解JavaScript的工作原理、设计模式以及最佳实践。 2. **代码调试与优化**:掌握源代码可以帮助开发者更好地调试和优化自己的JavaScript程序。 3. **二次开发**:许多开源项目提供了...

    按比例缩放图片,JavaScript代码.rar

    按比例缩放图片,JavaScript代码.rar按比例缩放图片,JavaScript代码.rar按比例缩放图片,JavaScript代码.rar按比例缩放图片,JavaScript代码.rar按比例缩放图片,JavaScript代码.rar按比例缩放图片,JavaScript代码...

    标签内JavaScript代码的高亮显示插件

    本文将探讨一种专门用于在`&lt;pre&gt;`标签内实现JavaScript代码高亮显示的插件,并结合源码分析工具,提升开发效率。 首先,`&lt;pre&gt;`标签内的JavaScript代码高亮显示插件通常是基于CSS和JavaScript实现的。这类插件通过...

    JavaScript代码生成器

    JavaScript代码生成器就是一种能够帮助开发者快速生成JavaScript代码的工具,它可以极大提高开发效率,减少手动编写重复性代码的工作量。 JavaScript代码生成器通常具备以下功能: 1. 自动化模板:这些工具提供了...

    javascript实例代码(包含全部实例)

    这份"javascript实例代码"的压缩包很可能包含了丰富的JavaScript代码片段,涵盖了从基础操作到复杂功能的各种实例,对于学习和理解JavaScript语法、函数、对象、事件处理、DOM操作等有极大的帮助。 首先,基础知识...

    一些常用的JavaScript代码

    一些常用的JavaScript代码,全是我工作中的总结

    JavaScript BOM操作 示例代码

    示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码JavaScript BOM操作 示例代码...

    Javascript编程宝典代码

    Javascript编程宝典代码 Javascript编程宝典代码 Javascript编程宝典代码 Javascript编程宝典代码

    常用Javascript特效代码

    常用Javascript特效代码

    超实用的javascript代码段

    超实用的javascript代码段。包含近300段代码和400个解决方案,含目录

    深入理解JavaScript系列

    深入理解JavaScript系列(1):编写高质量JavaScript代码的基本要点 深入理解JavaScript系列(2):揭秘命名函数表达式 深入理解JavaScript系列(3):全面解析Module模式 深入理解JavaScript系列(4):立即调用...

Global site tag (gtag.js) - Google Analytics