`

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经典特效---javascript代码自动生成.rar

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

    Javascript代码美化工具

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

    JavaScript函数(源代码)

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

    Effective JavaScript 编写高质量JavaScript代码的68个有效方法1

    《Effective JavaScript:编写高质量JavaScript代码的68个有效方法》是David Herman撰写的一本JavaScript编程指南,该书基于作者在Ecma的JavaScript标准化委员会的工作经验,深入探讨了JavaScript的内部工作机制、...

    Javascript Obfuscator代码混淆

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

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

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

    javascript实例代码集

    这个"javascript实例代码集"包含了一系列的JavaScript代码示例,旨在帮助开发者更好地理解和运用JavaScript。 1. **基础语法**: JavaScript的基础包括变量声明、数据类型(如字符串、数字、布尔值、对象和数组)、...

    超实用的javascript代码段 源码

    理解这些基础知识是编写任何JavaScript代码段的起点。 二、函数与闭包 函数是JavaScript中的重要组成部分,用于封装可重复使用的代码。函数可以接受参数,返回值,还可以通过立即调用函数表达式(IIFE)来创建私有...

    javascript代码大全

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

    深入浅出JavaScript源代码

    这些构成了JavaScript语法的基础,是编写任何JavaScript代码的前提。 接着,深入到函数和作用域,这是JavaScript中至关重要的概念。函数可以封装代码,提高可复用性,而作用域则决定了变量的可见性和生命周期。理解...

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

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

    常用JAVASCRIPT代码

    本资料包"常用JAVASCRIPT代码"包含了几个常见的JavaScript代码示例,旨在帮助开发者快速理解和应用JavaScript。 1. **基础语法** JavaScript的基础包括变量声明(`var`, `let`, `const`),数据类型(如字符串、...

    JavaScript 全部实例代码

    在"JavaScript全部实例代码"中,你将找到大量关于JavaScript语法和函数的实用示例,这些实例对于理解和掌握JavaScript至关重要。 首先,我们来看看JavaScript的基础语法。JavaScript的基本结构包括变量声明(`var`,...

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

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

    JavaScript代码生成器

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

    一些常用的JavaScript代码

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

    李炎恢在线课堂JavaScript讲义代码

    在实践部分,李炎恢的课程代码将提供实例,让学习者亲手编写和运行JavaScript代码,从而加深理解。通过解决实际问题,学习者可以掌握如何将理论知识应用于实际开发场景。 总之,"李炎恢在线课堂JavaScript讲义代码...

    JavaScript BOM操作 示例代码

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

    Javascript编程宝典代码

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

Global site tag (gtag.js) - Google Analytics