zoukankan      html  css  js  c++  java
  • js:语言精髓笔记4----面向对象概要与运算符二义性

    实例创建: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; 
    

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

     

  • 相关阅读:
    第二十二章 CLR寄宿和AppDomain
    第二十一章 托管堆和垃圾回收
    第二十章 异常和状态管理
    第十九章 可空值类型
    第十八章 定制特性
    第十七章 委托
    第十六章 数组
    第十五章 枚举类型和位标志
    html标签溢出问题
    Java 路径问题
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4008719.html
Copyright © 2011-2022 走看看