JavaScript语言精粹笔记之语法和对象

来源:互联网 发布:剑灵力士女捏脸数据图 编辑:程序博客网 时间:2024/06/07 01:45
在JavaScript中函数是基于lexical scoping的顶级对象。JavaScript是第一个成为主流的lambda语言,与Lisp和Scheme有很多共同点。JavaScript语言是ECMAScript标准第三版的一个实现。除了BNF外,Syntax diagrams(又叫铁路图)是一种更为直观的方法。
JS中的注释有两种:/**/和//。由于/**/这些字符会出现在正则表达式中,会截断注释,所以作者不推荐这种注释方法。
JS不允许在对象字面常量或者一个属性存取表达式的点号后使用保留的关键字作为对象的属性名。
JS中只有一个单一的数字类型。它在内部被表示为64位的浮点数。
字符串字面常量可以被包围在单引号或双引号中,它可以含有0个或多个字符。JS中没有字符类型,要表示字符,只须创建仅包含一个字符的字符串即可。JS中所有的字符都是16为的Unicode字符。\是转义字符。
数字、布尔值和字符串都是不可变的
JavaScript可以通过条件语句(if和switch)、循环语句(while、for和do)、强制跳转语句(break、return和throw)和函数调用来改变执行顺序。注意,Javascript中没有continue语句
Js中的代码块儿不会创建一个新的作用域,因此变量应该被定义在函数的顶端,而不是在代码块儿中。
JS中的对象被定义为可变的键控集合。JS中的对象是无类别的(class-free)。它对属性的名字和值没有约束。
JS中每个对象都连接到一个原型对象,并且他可以从中继承属性。所有通过对象字面常量创建的对象都连接到Object.prototype这个Javascript中标准的对象。当创建一个新对象时,可以选择某个对象作为它的原型。原型连接在更新时是不起作用的,只在检索值的时候才被用到。也就是说当我们对某个对象做出改变时不会影响该对象的原型。当我们尝试去检索对象的某个属性值,而且该对象没有该属性名时,那么JS会试着从原型对象中获取属性值。如果那个原型对象也没有该属性,那么再从它的原型中寻找,以此类推,直到该过程到达终点Object.prototype。如果想要的属性完全不存在于属性链中,那么结果就是undefined值。这个过程称为委托
delete运算符可以用来删除对象的属性。它将会移除对象自身包含的属性,而不会影响原型链中的任何对象。