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对象来访问这个参数数组,从而获取传递给函数的每个参数。

相关推荐