实例创建:obj = new contructor[(arguments)]; //如果没有参数可以忽略括号;所以注意这不是函数调用;

直接量与初始器:在之前的基本表达式中将直接量与初始器分开,这时因为直接量的声明中不包括运算过程,而初始器的声明中可以包括运算过程。

  • 直接量:一般分为6种,包括正则表达式声明;在引擎看来,其值是在编译期就确知的;
  • 初始器:包括函数,对象,数组声明;其本身可能是无法预期的。

对象:

  • delete:能删除对象的大多数成员,包括全局对象Global的成员;不能删除var声明变量和直接继承自原型的成员;仅在删除一个不能删除的成员时才会返回false;
  • in:对象成员检查(包括继承和不可枚举):string in object;
  • for/in:枚举对象成员(包括继承);
  • propertyIsEnumerable():枚举对象成员(不包括继承);

具有二义性的语法元素:(注意运算符和非运算符)

    • 连续运算符
    • 参数分隔符;
    • 对象/数组声明分隔符;
  • +
    • 增值运算符
    • 正值运算符
    • 连接运算符
  • ()
    • 函数调用运算符;
    • 强制运算,优先级;
    • 形式参数表;
  • ?:  (问号没有二义性)
    • 条件运算符
    • 冒号声明标签含义;
    • 冒号声明switch分支含义;
    • 冒号声明对象成员的含义;
  • []
    • 数组下标;(运算符
    • 对象成员存取;(运算符
    • 数组直接量声明;
  • {}
    • 函数直接量代码部分声明;
    • 对象直接量声明;
    • 复合语句;
    • 空语句;
    • 语句分隔符;

加号:

  • 字符串连接优先;
  • 特别注意在DOM模型中使用;
   var el = document.getElementById(‘testpic’);
var value = parseInt(el.style.borderWidth); //值
var nuit = el.style.borderWidth.substr(value.toString().length); //单位

括号: 

  • 只做传值参数表: new;
  • 限定表达式的词法元素:具有将表达式结果转化为布尔值的副作用;
  • 强制表达式运算:如优先级;连续运算符运算,返回值为表达式最后一个值;
  • 函数/方法调用:一般此时括号前无空格,其他情况会有空格;注意标签与运算元是属于两个不同的标识符系统,所以不可以这样使用:
 break (my_label)

逗号:  

  • 连续运算符; 如 :
  •   a = (1,2,3);//a为3,这个整个表达式返回3
    a = 1,2,3;//a为1,这个整个表达式返回3
    注意:
    var i = 100;
    alert(i +=20, i *=2, value); //函数中,逗号也作为连续运算,alert为函数只能传入第一个参数;

      

  • 语法分隔符; 如:

    var a = 1,2,3; //声明语句会将逗号解析成分隔符而出错;(var会使连续运算表达式变为连续声明语句)
    

      

方括号: 

由于方括号具有取值和数组直接量声明的功能;下面代码都无错误:

var a = [1]  [1];
var b = {} [0];

 需要注意的是当方括号作为数组直接量声明的时候,逗号为语法分隔符:

var a = ['c',1,10];

 当方括号作为对象或数组取值的时候,逗号为连续运算符:

var a = ['c',12,2] ['c',12,2]  //等价于  ['c',12,2] [2] ;a = 2;

 (这里就要注意在写[[],[],[]]形式的时候漏掉逗号是不会报错的); 

 

js:语言精髓笔记4----面向对象概要与运算符二义性的更多相关文章

  1. js:语言精髓笔记11--动态语言特性(1)

    语言:程序最终被表达为数据(结构)和逻辑(算法),命令式和说明式/函数式语言分别从这两方面分类: 动态:在语言陈述时无法确定,必须在计算机执行时才能确定语言关系:JS是完全动态语言,导致其不确定性一般 ...

  2. js:语言精髓笔记7----原型继承

    面向对象有三个基本特性:封装,继承,多态:如果都满足的话称为面向对象语言:而部分满足则称为基于对象语言: 数据类型实现模型描述: JavaScript对象模型: 构造过程:函数->构造器 构造器 ...

  3. js:语言精髓笔记5----语言分类

    计算模型:源于对计算过程的不同认识: 1.基于不同计算模型一般分为://教科书的一般分类 命令式语言: 函数式语言: 逻辑式语言: 面向对象程序设计语言: 2.基于程序本质分类:  //编程的经典法则 ...

  4. js:语言精髓笔记1--标识符与基本类型

    标识符: 命名: 语法以及类型----语法关键字                                           //逻辑 值(的存储位置)----变量和常量           ...

  5. js:语言精髓笔记12--动态语言特性(2)

    对于括号内: 通过赋值时发生的重写: (Object1 = function() {}).prototype.value = 100; var obj1 = new Object1; console. ...

  6. js:语言精髓笔记9--函数式语言特征

    形式化运算系统的研究: 图灵:提出图灵机形式系统,通过0,1运算系统来解决复杂问题: 冯诺依曼:提出了冯诺依曼体系:即通过修改内存反映运算结果: 阿隆左.丘奇:提出新的运算范型Lambda演算,计算机 ...

  7. js:语言精髓笔记8--对象系统

    封装: 一把对象系统,封装是由语法解析来实现的,即语法作用域:但js是动态语言,因此只能依赖变量作用域: js的变量作用域只有表达式,函数,全局三种:所以js只能实现public和private两种封 ...

  8. js:语言精髓笔记10--闭包

    闭包:  //JS函数式风格中,在内部保存数据和对外无副作用这两个特性主要就是通过闭包实现的: 函数与闭包: 一个函数是一段静态代码,它是一个代码书写时已经编译期,静态概念:闭包是函数在代码运行过程中 ...

  9. js:语言精髓笔记6----作用域

    js基础语法:由语句.表达式和变量构成:   语句是主要表达方式:单语句->复合语句(代码块)->程序片段(函数):js中没有单元和程序的概念: 作用域: 语法作用域与变量作用域的区别:前 ...

随机推荐

  1. C语言中的struct和typedef struct<转载>

    原文:http://www.nowamagic.net/librarys/veda/detail/1785 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字.这里的数据类型包括内部数 ...

  2. hibernate中的session缓存

    1.什么是session缓存? 在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存. 只要 Session 实例没有结束生命周期, 且没有 ...

  3. PCL初步使用

    转载:http://blog.csdn.net/vbskj/article/details/7819828 本次试验的目的是利用PCL库来重建地形点云数据,并进行显示.总体流程是1)把DEM数据导入P ...

  4. DICOM:DICOM标准学习路线图(初稿)

    题记: DICOM医学图像处理专栏撰写已有两个年头,积累了近百篇文章.起初只是用于记录自己科研.工作中遇到的疑难问题,专注于图像处理(主要是医学图像,这也正是专栏名称最初的由来):后来逐渐延伸到了DI ...

  5. MySQL 索引详解大全

    什么是索引? 1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引,会保存在额外的文件中. 2. 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结 ...

  6. wget批量下载

    wget -i download.txt 这样就会把download.txt里面列出的每个URL都下载下来. wget -c http://the.url.of/incomplete/file 使用断 ...

  7. 【Hibernate】Hibernate系列3之配置文件详解

    配置文件详解 3.1.配置文件 连接池性能优化:http://www.cnblogs.com/xdp-gacl/p/4002804.html

  8. TCP中 recv和sendf函数

    recv和send函数: #include<sys/socket.h> ssize_t recv(int sockfd, void *buff, size_t nbytes, int fl ...

  9. eclipse 启动后,啥也不干,就一直在loading descriptor for XXX (XXX为工程名),,其他什么操作都不能操作。 如下图所示,保存文件也无法保存。 这个怎么办?一年好几天,什么都干不了!!!!!

    解决办法: 解决办法是 断一下网就好了

  10. debian下mysql主从配置

    1.确保master/slave只有一份/etc/mysql/my.cnf , 不要在其他地方再有my.cnf (如/etc/my.cnf  /usr/local之类) 2.master配置: 在[m ...