`
xj19891016
  • 浏览: 28747 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论
阅读更多
如下的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个属性或方法的对象,其中属性名和其定义之间用冒号(:)隔开。例如:
<script language="JavaScript" type="text/javascript">
var obj={}; //定义了一个空对象
var user={
name:"jack", //定义了name属性,初始化为jack
favoriteColor:["red","green","black","white"],//定义了颜色喜好数组
hello:function(){ //定义了方法hello
alert("hello,"+this.name);
},
sex:"male" //定义了性别属性sex,初始化为sex
}
//调用user 对象的方法hello
user.hello();
</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肯定不会陌生啦。例子
<html>
<body>
<div id = "div_1">欢迎</div>
</body>
</html>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
(function($){
	//一次性给jquery对象扩充多个方法或属性
	$.fn.extend({
		test : {
			name : "张三",
			sex : "男",
			show : function(){
				return "姓名:" + this.name + " 性别:" + this.sex;
			}
		},
		money : 10000,
		args : ["1","22","333",{args : ["4444","55555"],xiao : function(){alert("haahaaaa")}}]
	});
	//一次只给jquery对象扩充一个属性或方法
	$.fn["abcd_aa"] = function(){
		alert("abcd_aa");
	};
	$.fn["ccccc"] = "你好";
	$.fn.xxx = function(){
		alert("xxx");
	};
	$.fn.jjj = "你好jjj";
	
	//一次性给jquery本身扩充多个方法或属性
	$.extend({
		abc : function(){alert("abc")},
		efg : function(){alert("efg")}
	});
	//一次只给jquery本身扩充一个属性或方法
	$.qq = function(){alert("hahahhahahahha")};
	$["aqaq"] = function(){alert("aqaq")};

	$["basePackage"] =  $["basePackage"] || {};
	$["basePackage"]["fun"] = function(name){
		//alert("basePackage.fun()方法")
		this.name = name;
	};
	$["basePackage"]["fun"].prototype = {
		_init : function(){alert("初始化方法,"+this.name)},
		a : "a属性"
	};
	//var newObj = new $["basePackage"]["fun"]();
	//newObj._init();
	//alert(newObj.a);
	new $["basePackage"]["fun"]("小sss")._init();

	$.base = $.base || {};
	$.base.fun = function(){alert("base.fun()方法")};
})(jQuery);

/*alert($("#div_1").test.show());
alert($("#div_1").money);
alert($("#div_1").args[0]);
alert($("#div_1").args[1]);
alert($("#div_1").args[2]);
alert($("#div_1").args[3].args[0]);
alert($("#div_1").args[3].args[1]);
alert($("#div_1").args[3].xiao());
alert($("#div_1").ccccc);
alert($.abc());
alert($.efg());
alert($("#div_1").xxx());
alert($("#div_1").jjj);
alert($.qq());
alert($.aqaq());
alert($.basePackage.fun());
alert($.base.fun());*/
</script>

jQuery.extend(object)
当参数只有一个时,表示扩展jQuery类本身,为类添加新的方法。
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$.extend({
	adda : function(){
		return 5;
	},
	test_a : {
		name : "lisi",
		show : function(){
			alert(this.name);
		},
		test_b : {
			sex : "男",
			getSex : function(){
				return this.sex;
			}
		}
	}
});
alert($.adda());
$.test_a.show();
alert($.test_a.test_b.getSex());
</script>

当参数有多个时(jQuery.extend(dest,src1,src2,src3...srcN)),表示将src1、src2...对象的属性和方法逐一复制给dest对象,需要注意的是,在复制的过程中,排在后面的参数(对象)将会覆盖排在前面的参数的属性和方法;
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var objA = { speed:"slow" };

var objB = { speed:"fast", power:"hard" };

var objD = { speed:"test", name:"zhangsan"};

var objC = jQuery.extend(objA, objB, objD);

document.write("<dt>objA");

for (var p in objA) { document.write("<dd>" + p + "->" + objA[p]); }

document.write("<dt>objC");

for (var p in objC) { document.write("<dd>" + p + "->" + objC[p]); }
</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中没有的属性(方法)都拷贝到其中。
分享到:
评论

相关推荐

    Dreamweaver CS5安装jQuery语法提示插件

    reamweaver CS5安装jQuery语法提示插件 最近在做项目时经常会用到jQuery,无意中获得了Dreamweaver的jQuery语法提示插件,在项目开发时带来了很多方便。下面来介绍一下。 其实该Dreamweaver CS5绿色版的jquery代码...

    jquery语法高亮插件

    **jQuery语法高亮插件详解** 在Web开发中,为了让代码更具可读性和美观性,开发者通常会使用语法高亮工具。"jQuery语法高亮插件"是一个专门为jQuery代码提供色彩鲜明、易于阅读的显示效果的插件。该插件能够帮助...

    jQuery 语法学习笔记

    jQuery 语法学习笔记jQuery 语法学习笔记jQuery 语法学习笔记jQuery 语法学习笔记jQuery 语法学习笔记jQuery 语法学习笔记jQuery 语法学习笔记jQuery 语法学习笔记jQuery 语法学习笔记jQuery 语法学习笔记jQuery ...

    jquery语法提示扩展

    《jQuery语法提示扩展在Dreamweaver中的应用》 在网页开发过程中,JavaScript库jQuery以其简洁易用的API和强大的功能,成为了许多开发者首选的工具。然而,在编写代码时,手动输入完整的jQuery函数和方法可能会耗费...

    Dreamweaver CS5中的jQuery语法提示插件

    Dreamweaver CS5的jQuery语法提示插件,最近在做项目时经常会用到jQuery,无意中获得了Dreamweaver的jQuery语法提示插件,在项目开发时带来了很多方便。  Dreamweaver语法提示插件使用说明:  1.把shared、...

    Jquery语法大全

    Jquery语法大全(包括选择器、方法、简单的操作样例等)

    jQuery语法提示插件 for Dreamweaver CS5.rar

    Dreamweaver CS5的jQuery语法提示插件,最近在做项目时经常会用到jQuery,无意中获得了Dreamweaver的jQuery语法提示插件,在项目开发时带来了很多方便。 Dreamweaver语法提示插件使用说明: 1.把shared、Extensions...

    Dreamweaver中的jQuery语法提示插件

    在描述中提到的“Dreamweaver中的jQuery语法提示插件”是为了增强Dreamweaver在处理jQuery代码时的智能提示和代码补全功能,帮助开发者更高效地编写jQuery代码。 jQuery是一个广泛使用的JavaScript库,简化了...

    jQuery语法

    ### jQuery语法知识点详解 #### 一、引入jQuery 在网页中使用jQuery之前,需要先引入jQuery库。有几种常见的引入方式: 1. **本地引入**: ```html &lt;script type="text/javascript" src="jquery.js"&gt; ``` ...

    jquery语法与选择器介绍 带有案例

    ### jQuery语法基础 jQuery的核心是它的链式操作和简洁的语法。在jQuery中,通常以`$`函数开始,它可以用来选择DOM元素、执行操作或创建新元素。 ```javascript // 选择元素 $('selector').action(); // 创建元素...

    jQuery 语法高亮插件

    jQuery 语法高亮插件是用于在网页上展示代码片段时增强可读性和美观度的工具。此类插件通常能够自动识别多种编程语言的语法结构,并通过不同的颜色和样式进行突出显示,使得代码更容易理解。"Syntax-jQuery" 插件...

    jQuery语法讲解以及开发

    jQuery 语法讲解及开发 jQuery 是一款非常流行的 JavaScript 库,它的主要目标是简化JavaScript编程,尤其是处理HTML文档、创建动态效果以及实现AJAX交互。jQuery 的语法设计使得开发者能够更高效地编写代码,同时...

    JQuery语法提示配置文件(含中文解释)

    本文将深入讲解jQuery语法提示配置文件的用途及其与Spket的结合使用,帮助开发者在编写jQuery代码时提高效率,避免语法错误,并方便地查阅相关API功能。** **jQuery语法提示配置文件**是用于IDE(集成开发环境)的...

    完整版(JQuery语法)

    在本文中,我们将深入探讨jQuery语法的核心概念,包括选择器、操作元素和DOM交互。 **jQuery 语法基础** jQuery 的核心语法是通过选择器选取HTML元素,然后对这些元素执行操作。基本语法结构如下: ```javascript ...

    JQuery语法

    JQuery语法,帮助,快速、准确掌握jquery的使用。

    jquery语法和注意事项

    ### jQuery语法和注意事项 #### 一、页面元素的引用 在使用jQuery进行页面元素操作时,最基础也是最重要的就是能够准确地引用到页面中的元素。jQuery提供了多种方式来选取元素,包括通过`id`、`class`、`标签名`等...

    jquery语法总结和注意事项

    jquery语法总结和注意事项

    Jquery语法

    ### Jquery语法详解 #### 一、概述 **jQuery**是一种快速、简洁的JavaScript库,其设计宗旨是为了简化HTML文档遍历、事件处理、动画以及Ajax交互等常见功能的实现方式。通过使用jQuery,开发者能够更加高效地选取...

Global site tag (gtag.js) - Google Analytics