平时工作中知道,要会用一门技术很简单,Google一下,然后再Copy+Paste,再修改一下就好了。可是往往我们是知其然不知其所以然。当真正碰到客户提一两个问题的时候,就会呆在那里,不知道从哪里下手,问其原因,得到的回答是:当初看到网上是这样的,不知道怎么修改。
这就给我们实际的工作带来很多麻烦。要用jQuery,就要看jQuery的源码,不能说全部看懂,但是大体的一些结构和用法要熟,这样才能以不变应万变。另外我相信jQuery之所以一出来就受到很多从业人员的喜欢,一定有它的道理,从里面的细节可以看到大师们是怎么用JavaScript的,会让我们 受益匪浅,会是你成长的催化剂。
看到jQuery的源码,会发现和其它的extjs,dojo等框架一样,用到了很多我们平时用不到的JavaScript的特性。因为平时很多属性都没有用到过。下面就还是一样从最基本的开始,虽说是基础,但是很重要。
一,JavaScript变量的认识
1. 和JVM内部有分堆和栈一样,不同的区域来存放的东西不一样。JavaScript解释器里也是一样。在 JavaScript 中,变量可以存放两种类型的值,即原始值和引用值。
(1)原始值是存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置。
(2)引用值是存储在堆(heap)中的
对象,也就是说,存储在变量处的值是一个指针,指向存储对象的内存处。
2.原始值有:Undefined,Null,Boolean,String,Number五种类型。因为这五种类型,占用内存多大的空间是固定的,而且占用空间相对软小,所以会选择存放在stack中。在栈中除天存放以上五种原始值类型,还要存放一个值 ,就是引用值的地址(也是假如一个Function,Object等,他们本身是对象,是存放在heap中的,但是解释器要去引用这些对象的时候是通过地址去引用)这些程序里面的存对象的地址这种类型,长度大小也是固定的。所以存放在在heap中对象的地址也是存放在stack中的。
比如Date类型就是存放在heap中,请看下面的例子:
<html>
<head>
<script type="text/javascript">
function seeResult(){
var day1=new Date();
alert('First: day1='+DateDemo(day1)+',ms='+day1.getTime());
var day2=day1;
day2.setMilliseconds(day2.getMilliseconds()+1);
alert('Second: day1='+DateDemo(day1)+',ms='+day1.getTime());
}
function DateDemo(d){
var s = "";
s += (d.getMonth() + 1) + "/";
s += d.getDate() + "/";
s += d.getFullYear();
return(s);
}
</script>
</head>
<body>
<h1 id="myHeader" onclick="seeResult()">点击我,查看结果</h1>
</body>
</html>
stack中的两个地址day1和day2都指向heap中的同一个Date对象,所以在day2对应的Date上加一个毫秒,输出day1的两次毫秒数会不一样。
我以前刚写JavaScript的时候犯过这样的错误,@@!
二,五种原始值
上面有提到JavaScript中原始值有五种,分别是Undefined,Null,Boolean,Number,String,那么JS解释器是用什么来判断的呢。或者说我们如何来判断呢!
先看一个运算符typeof
typeof运算符需要一个参数,这个参数就是你要让typeof检查的变量:
比如:
var name="bevis";
var age = 29;
alert(typeof name);
alert(typeof age);
上面这段代码输出的结果分别是string,number
下面结一个对照关系:
typeof运算的结果 输入的变量
------------------------------------------
undefined Undefined类型变量
boolean Boolean类型变量
number Number类型变量
string String类型变量
object 引用类型变量或Null类型
运好typeof对我们程序会带来很多方便!
2.Undefined类型
Undefined类型只有一个值undefined,当声明一个变量的时候,没有对变量赋值的时候,这个变量就会被赋值undefined值。
通过下面语句可以证明:
var name;
alert(typeof name);//输出为undefined
alert(name==undefined);//输出为true
还有一种情况需要注意:
var name;
alert(typeof name);//输出为undefined
alert(typeof myname);//输出为undefined
alert(name=="undefined");//输出为false
alert(name==undefined);//输出为true
对以上代码得出如下结论:
(1)name变量定义了没有赋值,所以用typeof输出结果为undefined,可是myname前面没有定义过,输出结果也为undefined。所以输出结果为undefined时,这个变量有可能是没有定义过,也可能是定义过了没有赋值。
而且要特别注意的时,因为没有定义过的变量过用typeof是可以的,而且也可以输出值,但是如果对mynqme进行如下运用alert(myname==undefined);时就会出错,因为变量要先用声明再使用。
(2)undefined和字符串"undefined"不相等,undefined不是字符串,而是一种数据类型。
3.Null类型
Null类型,它也只有一个值null
null表示尚不存在的对象
alert(typeof null);//输出为"object"
alert(null==undefined);//输出为true,因为undefined派生于null
其实对于JavaScript最迷惑的两个就是Null和Undefined类型。
再补充一点,
前面用typeof进行比较时,如果原始类弄的话,调用typeof是输出相应的类型,如果对引用类型用typeof的话,总是输出object
如果要判断对象是不是哪种类型的对象,就要用instanceof
var name="bevis";
alert(typeof name);//输出为string
alert(name instanceof String);//输出为false
name= new String("bevis");
alert(typeof name);//输出为string object
alert(name instanceof String);//输出为true
分享到:
- 2009-11-15 14:06
- 浏览 2554
- 评论(4)
- 论坛回复 / 浏览 (4 / 6190)
- 查看更多
相关推荐
这里,我们有针对这两个主题的学习笔记和参考资料,包括JavaScript培训、jQuery API、JavaScript基础、函数详解以及jQuery使用手册等内容。让我们逐一探讨这些知识点。 首先,`JavaScript培训.zip`可能包含的是对...
在实战中,学习如何将JavaScript和jQuery结合,可以创建出高效、用户友好的Web应用。例如,通过JavaScript进行前端验证,确保用户输入的数据符合规范;使用jQuery简化DOM操作,提高代码可读性和效率;利用Ajax实现无...
学习这些案例时,应重点理解它们是如何利用jQuery的便利性来简化JavaScript代码的,同时也要了解JavaScript的基础语法和原生API,以便在不适用jQuery或者需要更底层控制时能灵活应对。这些案例对于初学者来说是一份...
例如,闭包可以用于创建私有变量,原型链则解释了如何通过对象之间的继承关系共享属性和方法,这对于理解JQuery的面向对象编程有很大帮助。 最后,`程序员常用javascript特效`可能是关于使用JQuery实现的各种常见...
JavaScript语法简洁,易于学习,但同时也具有强大的功能,如变量、数据类型、控制结构(条件语句、循环)、函数、对象和类等。在本书中,读者将学习如何利用这些基本概念来构建复杂的交互式网页应用。 JavaScript的...
通过分析和实践这个"JavaScript+jQuery程序设计 源码",学习者不仅能巩固JavaScript和jQuery的基础知识,还能提升实际项目开发经验,尤其是处理网页交互和动态效果的能力。同时,这也将有助于理解和应用更多高级特性...
在这个项目中,初学者可以学习到如何使用JavaScript操作DOM元素来创建游戏界面,处理用户输入,以及用jQuery进行动态更新。可能涉及的知识点包括事件监听、逻辑判断(检查是否有五子连珠)、数组遍历和一些基本的...
1. **基础概念**:理解HTML结构、CSS选择器、JavaScript变量和数据类型等基础知识。 2. **DOM操作**:掌握如何使用JavaScript和jQuery来查找、修改和创建DOM元素。 3. **事件处理**:学习JavaScript和jQuery的事件...
在书中,你会学习到JavaScript的基础语法,包括变量、数据类型、运算符、流程控制(如条件语句和循环)、函数以及对象。同时,深入理解原型链、闭包、异步编程(如回调函数、Promise和async/await)等高级特性也是必...
深入理解JavaScript和jQuery是Web开发中的重要课题,这两者都是前端开发者不可或缺的工具。JavaScript作为浏览器端的主要脚本语言,负责动态交互,而jQuery则是一个轻量级的库,极大地简化了JavaScript的DOM操作,...
JavaScript和jQuery是Web开发中的两个重要工具,它们在创建交互式和动态网页方面发挥着关键作用。对于初学者来说,理解和掌握这两者是至关重要的。 JavaScript,作为一种强大的客户端脚本语言,是所有现代网页开发...
《精通JavaScript:jQuery之父力作 附源码》是一本深入探讨JavaScript编程技术的书籍,作者在jQuery领域的权威使得这本书具有极高的学习价值。本书旨在帮助读者从基础到高级,全面掌握JavaScript语言,尤其注重实际...
JavaScript的基本语法、变量、数据类型、控制结构、函数以及对象等都是学习的重点。书中源码将展示如何利用JavaScript实现计时器、表单验证、AJAX请求等实际应用。 CSS(层叠样式表)则是用于描述HTML或XML(包括如...
《JavaScript和jQuery实战手册 原书第3版》是一本深入浅出的编程指南,专为想要掌握JavaScript和jQuery的开发者所设计。这本书详细介绍了这两种技术的核心概念、语法以及在实际开发中的应用,旨在帮助读者提升Web...
要学习jQuery和JavaScript框架,你可以通过以下步骤: 1. **理解基础**:首先,了解JavaScript的基础知识,包括变量、数据类型、控制流、函数和对象。 2. **学习jQuery**:阅读jQuery官方文档,理解选择器、DOM...
本资源包“2016javascript+jquery学习文档”涵盖了这两个领域的基础知识和高级技巧,适合初学者和有一定经验的开发者进行学习和提升。 JavaScript是一种轻量级的解释型编程语言,它是网页开发的标准组成部分,主要...
《精通JavaScript(源代码)》是由jQuery之父John Resig撰写的高级JavaScript技术书籍,它不仅深入探讨了JavaScript的核心概念,而且重点解析了jQuery库的内部工作机制,为读者揭示了JavaScript编程的深层次奥秘。...
在这个"精通JavaScript+jQuery(实例)"的教程中,你将深入学习这两种技术,并通过一系列的实例来提升你的技能。 JavaScript,作为一门客户端脚本语言,是网页动态效果的核心。它允许开发者在用户与网页交互时进行...
通过阅读这些书籍和教程,你可以系统地学习 JavaScript 和 jQuery 的基础知识,并通过实践应用巩固理论知识,从而成为一名熟练的前端开发者。在学习过程中,建议结合实际项目进行练习,这将有助于更好地理解这些技术...
《众妙之门——JavaScript与jQuery技术精粹》是一本由Smashing Magazine出版的高端IT图书,它汇聚了全球顶尖网站设计专家的经验与智慧,旨在深入解析JavaScript和jQuery的关键技术,帮助读者提升在网页设计与开发中...