标签: 学习笔记 javaScript
命名规范
1.匈牙利命名法:类型前缀+首字母大写
var sUserName;即s表示字符串
2.驼峰命名法:混合使用大小写字母
userName;首单词后首字母大写
获取元素
document.getElementById(‘btn’);
:document:整个html文档
:通过id名:通过id获取元素(节点)
:在文档里面查找id为btn的元素
:所以id必须是唯一的
鼠标事件:
onmouseover:当鼠标经过的时候
onmouseout:当鼠标离开的时候
onclick:当鼠标点击的时候
function show(){
代码
}
show();
虽然JavaScript 和ECMAScript 通常都被人们用来表达相同的含义,但JavaScript 的含义却比ECMA-262 中规定的要多得多。没错,一个完整的JavaScript实现应该由下列三个不同的部分组成。
核心(ECMAScript)
文档对象模型(DOM)
浏览器对象模型(BOM)
由ECMA-262 定义的ECMAScript 与Web 浏览器没有依赖关系。实际上,这门语言本身并不包含输入和输出定义。ECMA-262定义的只是这门语言的基础,而在此基础之上可以构建更完善的脚本语言。我们常见的Web浏览器只是ECMAScript 实现可能的宿主环境之一。宿主环境不仅提供基本的ECMAScript实现,同时也会提供该语言的扩展,以便语言与环境之间对接交互。而这些扩展——如DOM,则利用ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。其他宿主环境包括Node(一种服务端JavaScript 平台)和Adobe Flash。既然ECMA-262 标准没有参照Web 浏览器,那它都规定了些什么内容呢?大致说来,它规定了这门语言的下列组成部分: 语法 类型 语句 关键字 保留字 操作符 对象
ECMAScript 就是对实现该标准规定的各个方面内容的语言的描述。JavaScript 实现了ECMAScript,Adobe ActionScript 同样也实现了ECMAScript。
得到的结果只有:true false
文档对象模型(DOM,Document Object Model)是针对XML 但经过扩展用于HTML的应用程序编程接口(API,Application ProgrammingInterface)。DOM把整个页面映射为一个多层节点结构。HTML或XML页面的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。看下面这个HML 页面:
Sample Page
Hello World!
通过DOM创建的这个表示文档的树形图,开发人员获得了控制页面内容和结构的主动权。
借助DOM提供的API,开发人员可以轻松自如地删除、添加、替换或修改任何节点。
Internet Explorer 3 和Netscape Navigator 3有一个共同的特色,那就是支持可以访问和操作浏览器窗口的浏览器对象模型(BOM,Browser Object Model)。开发人员使用BOM 可以控制浏览器显示的页面以外的部分。而BOM真正与众不同的地方(也是经常会导致问题的地方),还是它作为JavaScript 实现的一部分但却没有相关的标准。这个问题在HTML5 中得到了解决,HTML5致力于把很多BOM 功能写入正式规范。HTML5发布后,很多关于BOM 的困惑烟消云散。从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的JavaScript 扩展算作BOM的一部分。下面就是一些这样的扩展:
借助BOM可以赋予js操控浏览器窗口的能力,比如复制,弹窗等
元素 typeo类型:检测给定变量的数据类型
可以返回下列的某个字符串:
“undefined”——如果这个值未定义;
“boolean”——如果这个值是布尔值;
“string”——如果这个值是字符串;
“number”——如果这个值是数值;
“object”——如果这个值是对象或null;
“function”——如果这个值是函数。
Underfined类型:只有一个值,即特殊的underfined,声明变量但未对其加以初始化时,这个变量的值就是underfined。
例如:
var message;
alert(message == undefined);
//true
var car = null;
alert(typeof car); // "object"
Boolean类型(布尔值):只有两个值 (true)和(false)
Numder类型(数值):
分为整数和浮点,并且存在数值范围,NaN属于特殊数值(非数值Not a Number)
数值转换:Number()、parseInt()、parseFloat()
String类型(字符串):字符串可以由双引号(”)或单引号(’)表示,两种字符串的写法都是有效的:
var firstName = "Nicholas";
var lastName = 'Zakas';
var o = new Object();
仅仅创建Object 的实例并没有什么用处,但关键是要理解一个重要的思想:
即在ECMAScript中,(就像Java中的java.lang.Object对象一样)Object类型是所有它的实例的基础。换句话说,Object类型所具有的任何属性和方法也同样存在于更具体的对象中。Object的每个实例都具有下列属性和方法。
》 constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是Object()。
》 hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如:o.hasOwnProperty(“name”))。
》 isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型(第5 章将讨论原型)。
》 propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in 语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名必须以字符串形式指定。
》 toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
》 toString():返回对象的字符串表示。
》 valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。
执行环境(execution context,为简单起见,有时也称为“环境”)是JavaScript 中最为重要的一个概念。执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象中。虽然我们编写的代码无法访问这个对象,但解析器在处理数据时会在后台使用它。
全局执行环境是最外围的一个执行环境。根据ECMAScript 实现所在的宿主环境不同,表示执行环境的对象也不一样。在Web 浏览器中,全局执行环境被认为是window 对象(第7章将详细讨论),因此所有全局变量和函数都是作为window 对象的属性和方法创建的。某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁(全局执行环境直到应用程序退出——例如关闭网页或浏览器——时才会被销毁)。
每个函数都有自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境。ECMAScript 程序中的执行流正是由这个方便的机制控制着。
当代码在一个环境中执行时,会创建变量对象的一个作用域链(scope chain)。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终都是当前执行的代码所在环境的变量对象。如果这个环境是函数,则将其活动对象(activation object)作为变量对象。活动对象在最开始时只包含一个变量,即arguments 对象(这个对象在全局环境中是不存在的)。作用域链中的下一个变量对象来自包含(外部)环境,而再下一个变量对象则来自下一个包含环境。这样,一直延续到全局执行环境;全局执行环境的变量对象始终都是作用域链中的最后一个对象。
标识符解析是沿着作用域链一级一级地搜索标识符的过程。搜索过程始终从作用域链的前端开始,然后逐级地向后回溯,直至找到标识符为止(如果找不到标识符,通常会导致错误发生)。
不同于其他语言的的是:可以保存任何数据类型,相同的于:都是有序的数据
创建数组的基本方式有两种:
1.使用Array构造函数 var color=new Array();
2.使用数组字面量表示法由一对包含数组项的方括号表示,多个数组项之间以逗号隔开。
1.算术运算符:+-*/% 优先级高于赋值运算符
2.赋值运算符:= += -= /= %= ++ –
3.关系运算符:< > <= >= == === != !== (得到的结果只有:true和false)
4.逻辑运算符:&& || !
true是字符串; true; 非0数值
任何语言的核心都必然会描述这门语言最基本的工作原理。而描述的内容通常都要涉及这门语言的语法、操作符、数据类型、内置功能等用于构建复杂解决方案的基本概念。如前所述,ECMA-262通过叫做ECMAScript的“伪语言”为我们描述了JavaScript的所有这些基本概念。