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

ECMAScript的基础语法:
[list]
[*]区分大小写
[*]变量是弱类型的
[*]每行结尾的分号可有可无([color=red]如果没有分号,ECMAScript就把这行代码的结尾看作该语句的结尾[/color])
[*]注释与Java、C和PHP语言的注释相同 // /* … */
[*]括号表明代码块{ }
[/list]
变量:
变量名遵循规则:[color=red]第一个字符必须是字母、下划线或美元符号[/color],余下的字符可以是字母、下划线、美元符号或数字字符。

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

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

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

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

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

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

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

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

ECMAScript支持闭包(closure)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值