`
desert3
  • 浏览: 2144703 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

JavaScript高级程序设计读书笔记-ECMAScript基础

 
阅读更多
ECMAScript的基础语法:
  • 区分大小写
  • 变量是弱类型的
  • 每行结尾的分号可有可无(如果没有分号,ECMAScript就把这行代码的结尾看作该语句的结尾
  • 注释与Java、C和PHP语言的注释相同 //    /* … */
  • 括号表明代码块{ }

变量:
变量名遵循规则:第一个字符必须是字母、下划线或美元符号,余下的字符可以是字母、下划线、美元符号或数字字符。

Camel标记法 myTestValue
Pascal标记法 MyTestValue
匈牙利类型标记法 iMyTestValue
类型、前缀(数组a 布尔型b 浮点型数字f 函数fn 整形数字i 对象o 正则表达式re 字符串s 变型(可以是任何类型)v)

原始类型:
ECMAScript有5种原始类型(primitive type),即Undefined、Null、Boolean、Number和String
undefined是声明了变量但未对其初始化时赋予该变量的值,null则用于表示尚未存在的对象。如果函数或者方法要返回的是对象,那么找不到该对象时,返回的通常是null。
引用类型:
遇到引用值时,所处理的就是对象。
ECMAScript并不真正具有类。事实上,除了说明不存在类,在ECMA-262中根本就没有出现“类”这个词,ECMAScript定义了“对象定义”,逻辑上等价于其他程序设计语言中的类

Object对象,ECMAScript中的所有对象都由这个对象继承而来(通过prototype原型链),Object对象中的所有属性和方法都会出现在其他对象中。
Object对象具有下列属性:
  • Constructor:对创建对象的函数的引用(指针)。对于Object对象,该指针指向原始的object()函数。
  • Prototype:对该对象的对象原型的引用。
  • Object对象还有几个方法:
  • HasOwnProperty(property):判断对象是否有某个特定的属性。o.hasOwnProperty(“name”)
  • IsPrototypeOf(object):判断该对象是否为另一个对象的原型。
  • PropertyIsEnumerable(property):判断给定的属性是否可以用for…in语句进行枚举(可以枚举到原型链中的属性)。
  • ToString():返回对象的原始字符串表示。对于Object对象,ECMAScript没有定义这个值,所以不同的ECMAScript实现具有不同的值。
  • ValueOf():返回最适合该对象的原始值。对于许多对象,该方法返回的值都与ToString()的返回值相同。

上面列出的所有属性和方法可以被其子对象覆盖。

instanceOf运算符:
在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回“object”。ECMAScript引入了另外一个运算符instanceof来解决这个问题。
alert(oStringObject instanceof String);

运算符:
delete:运算符删除对以前定义的对象属性或者方法的引用。(不能删除原始的ECMAScript中定义的方法

void:运算符对任何值都返回undefined。该运算符通常用来避免输出不应该输出的值。
例如,从HTML的<a>元素调用JavaScript函数时,函数不能返回有效值,否则浏览器将清空<a>所在的页面,并显示函数的结果
例如:<a href=”javascript:window.open(‘about:blank’)”>Click Me</a>,如果把这行代码放入到HTML页面,点击其中的链接,即可看到原始页面的屏幕上显示“[object]”。这是因为window.open方法返回了对新打开窗口的引用。然后该对象被转换成要显示的字符串。
要避免这种情况,可以用void运算符调用window.open函数:
<a href=”javascript:void(window.open(‘about:blank’))”>Click Me</a>
这使<a>接收到的返回值为undefined,它不是有效的值,不会显示在浏览器的窗口中。记住,没有返回值的函数真正返回的都是undefined

前后增量、前后减量运算符i++ ++i i-- --i
一元加法,一元减法:
位运算符
逻辑运算符:! & ||
无重载:
ECMAScript中的函数不能重载。考虑到ECMAScript与其他支持重载的高级程序设计语言相似,所有它不支持重载的特点不免让人感到意外。可用相同的名字在同一作用域中定义两个函数,而不会引发错误,但真正使用的是后一个函数

arguments:
在函数代码中使用arguments,开发者无需明确指出参数名,就能访问它们
arguments.length
与其他程序设计语言不同,ECMAScript不会验证传递给函数的参数个数是否等于函数定义的形式参数。开发者定义的函数都可以接受任意个数的参数(根据Netscape的文档,最多能接受25个),而不会引发任何错误。任何遗漏的参数都会以undefined传递给函数,多余的参数将忽略。

ECMAScript支持闭包(closure)
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics