JavaScript入门篇(一)
现在在项目中负责前端的开发工作,自然要学一学强大的JavaScript,深感每天在公司用到哪儿学到哪儿不够系统,特参考大牛的书籍,每天学一点,力图把实战中看到的知识系统化。
刚毕业,经验不够,第一次写这种博客,广大读者切勿被我这菜鸟诱导、、、若得大牛赐教,不胜感动感激感谢感恩戴德啊。。。
为啥要学JavaScript
其实JavaScript语法特别松散,像是面向对象,又不完全是面向对象,基本没办法做checkStyle,PMD等等,看着后台JAVA代码在CI上不断地规范起来了,再看看自己写的JS代码一盘散沙,那个恨啊,所以,立志从基础学起,从一点一滴做起,让自己的JS代码也能够易读易维护,逻辑上能够清晰可见,努力写出优秀代码。
嗯,再重复告诉自己那句话,“现在写下的代码,总有一天会有别人去读”。
进入正文
今天任务,把基本概念过一下,虽然已经用了几个月,但是没有系统地去看过,今天先过一下简单概念,下面摘录些笔记吧算是。
第一章
1、要想全面理解和掌握JavaScript,关键在于弄清楚它的本质、历史和局限性。
2、一个完整的JavaScript实现应该由下列三个不同的部分组成:■核心(ECMAScript),提供核心语言功能、■文档对象模型(DOM),提供访问和操作网页内容的方法和接口、■浏览器对象模型(BOM),提供与浏览器交互的方法和接口。
3、文档对象模型(DOM,DocumentObjectModel)是针对XML但经过扩展用于HTML的应用程序编程接口(API,ApplicationProgrammingInterface)。DOM把整个页面映射为一个多层节点结构。
4、开发人员使用BOM可以控制浏览器现实的页面以外的部分。
5、从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上把所有针对浏览器的JavaScript扩展算作BOM的一部分,下面就是一些这样的扩展:
■弹出新浏览器窗口的功能;
■移动、缩放和关闭浏览器窗口的功能;
■提供浏览器详细信息的navigator对象;
■提供浏览器说加载页面的详细信息的location对象;
■提供用户显示器分辨率详细信息的screen对象;
■对cookies的支持;
■像XMLHttpRequest和IE的ActiveXObject这样的自定义对象。
第二章
1、用于引入JS代码的<script>元素的5个属性:
■charset,表示通过src属性指定的代码的字符集,很少使用;
■defer,表示脚本可以延迟到文档完全被解析和显示之后再自行defer=”defer”,只有IE支持;
■language,已废弃;
■src,表示包含要执行代码的外部文件;
■type,必需,一般为text/javascript。
2、无论如何包含代码,浏览器都会按照<script>元素在页面中出现的先后顺序对他们一次进行解析。只有在解析完前面的<script>元素中的代码之后才会开始解析后面<script>元素中的代码。
第三章
1、ECMAScript中有5种简单数据类型:Undefined、Null、Boolean、Number和String。还有一种复杂数据类型----Object,Object本质上是由一组无需的名值对组成的。不支持任何创建自定义类型的机制,而所有值最终都将是上述6种数据类型之一。
2、对一个值使用typeof操作符可能返回下列某个字符串:
“undefined”----如果这个值未定义;
“boolean”----如果这个值是个布尔值;
“string”----如果这个值是个字符串;
“number”----如果这个值是个数值;
“object”----如果这个值是个对象或者null;
“function”----如果这个值是个函数。
3、typeof是一个操作符而不是函数,因此可以typeof(aaa)或typeofaaa。
Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
4、varmessage;
//varage;
alert(message);//”undefined”
alert(age);//产生错误
alert(typeofmessage);//”undefined”
alert(typeofage);//”undefined”
未初始化和未声明的变量执行typeof操作符都返回了undefined。
5、null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度来看,null值表示一个空对象指针,这也真是使用typeof操作符检测null值时会返回”object”的原因。
如果定义的变量准备在将来用于保存对象,最好将该变量初始化为null。
6、Undefined派生自null,故undefined==null返回true。
7、浮点数值的最高进度是17位小数,精确度远不如整数。例如,0.1加0.2结果不是0.3而是0.30000000000000004。
8、任何数值初一0会返回NaN,不会影响其他代码的执行。NaN,即非数值,是一个特殊的数值,用于表示一个本来要返回数值的操作却未返回数值的情况。NaN与任何值都不相等,包括NaN本身。
9、isNaN(),这个函数会尝试将参数转换为数值,任何不能转换的数值都将使得这个函数返回true。例如:isNaN(NaN)-----true;isNaN(10)----false;isNaN(true)----false(可以转换为数值1);isNaN(“10”)----true。
10、数值转换函数:Number(任何数据类型)、parseInt(字符串,几进制)、parseFloat(字符串,几进制)。
11、Null和undefined值没有toString()方法,数值的toString()方法可以加参数表示多少进制。
12、对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。
13、Object的每个实例都具有以下属性和方法:
Constructor,保存着用于创建当前对象的函数。
hasOwnProperty(propertyName),用于检查给定的属性在当前对象实例中(而不是在实例原型中)是否存在。
isPrototypeOf(object),用于检查传入的对象是否是另一个对象的原型。
propertyIsEnumerable(propertyName),用于检查给定的属性是否能够使用for-in语句来枚举。
toString()返回对象的字符串表示。
valueOf(),返回对象的字符串、数值或布尔值表示。
14、ECMAScript函数不在乎传进来多少个参数,也不在乎传进来的参数的类型,其在内部是用一个数组来表示的,函数接受到的始终都是这个数组。函数体内可以通过arguments对象来访问这个参数数组,从而获取传递给函数的每个参数。