js(2)——表达式与运算符

《JavaScript权威指南》读后笔记2 ———— 表达式与运算符 ————2018-04-23

         目录:

  1. 位运算符
  2.  eval()
  3.  instanceof 运算符
  4.  delete 运算符
  5.  属性特性
  6.  创建对象
  7.  关联数组
  8.  检测数组 :判断属性是否存在于某个对象中,通过
  9.  对象方法

1.  位运算符

  •    左移:将第一个操作数的所有二进制位进行左移,移动的位数由第二个操作数决定,移动的位数是 0 ~ 31 之间的整数。                                                                                                                                         左移位由 0 补充 。左移一位相当于乘以2,左移两位相当于乘以4,以此类推。
  •   带符号右移(>>): 将第一个操作数的所有二进制位进行右移,移动的位数由第二个操作数决定,移动的位数是 0 ~ 31 之间的整数。                                                                                                                   右边溢出的位将忽略 ,填补在左边的位由原操作数的符号决定,以便保证     结果的符号与原操作数一致。                                                                                                                                                                   左移一位相当于除以2,左移两位相当于除以4,以此类推。若第一个操作数是正数,移位后用 0 补充最高位;若第一个操作数是负数,移位后用 1 补充最高位
  • 无符号右移(>>>):与(>>)基本一致,只是左边的高位总是补充 0 ,与原来操作数的符号无关。

2.  eval()

    这是一个函数还是一个运算符;

   只有一个参数;

   如果传入的参数不是字符串,它就直接返回这个参数。

   如果参数是字符串,它会把字符串当成js代码进行编译,如果编译失败则抛出一个语法(SyntaxError)异常。如果编译成功,则开始执行这段代码,并返回字符串的最后一个表达式或语句的值,如果最后一个表达式或语句没有值,则最终返回undefined 。

3. instanceof 运算符

    左操作数是一个对象,右操作数标识对象的类。

   如果左侧的对象是右侧类的实例,则表达式返回true否则false。

1 var d=new Date();
2 d instanceof Date; //计算结果为true,d由date()创建的
3 d instanceof Object; //计算结果为true,所有的对象都是Object实例
4 d instanceof Number; //计算结果为false,d不是一个Number对象

4.  delete 运算符

    用来删除对象属性或数组元素

5. 属性特性

  • 可写 writable attribute:表明是否可以设置该属性的值;
  • 可枚举 enumerable attribute:表明是否可以通过 for / in 循环返回该属性;
  • 可配置 configurable attribute:表明是否可以删除或修改该属性;

6. 创建对象

      方法

  • 对象直接量 :由若干名 / 值对组成的映射表,名 / 值 之间用冒号分开,名 / 值对之间用逗号分隔,整个映射表由花括号括起来;
 1 var empty={};
 2 var point={ x : 0,y : 0};
 3 var point2={x : point.x , y : point.y};
 4 var book={
 5    "mian title" : "js" ,
 6     "sub-title" : "the guide" ,
 7     autor : {   // 这个属性是一个对象,是没有引号的
 8          first : "David" ,   // 这里的属性名也是没有引号的
 9          surname : "Flanagan" 
10      }  
11 };
  • 关键字 new
var o = new Object () ;  //创建一个空对象
  • Object.create(对象的原型 , 对对象属性进行进一步描述-可选参数)
  • var o1 =Object.create({x : 1 ,y : 2});  //o1继承了属性x,y

7.  关联数组

object.property
object["property"]  //两种表达式的值相同

  第一种:点运算和一个标识符

  第二种:方括号和一个字符串,通过字符串进行索引,这种数组就是关联数组、也称作散列、映射或字典。

8. 检测数组 :判断属性是否存在于某个对象中,通过 

  • in 运算符
1 //in 运算符,如果对象的自有属性或继承属性中包含这个属性则返回true
2 var o = { x:1};
3 "x" in o ;  //true
4 "y" in o ; //false ,y不是o的属性
5 "toString" in o ;  true ,o继承toString属性
  • hasOwnPreperty()
1 //hasOwnPreperty()用来检测给定的名字是否是对象的自有属性,对于继承属性将返回false
2 var 0={x:1};
3 o.hasOwnPreperty("x"); //true
4 o.hasOwnPreperty("y"); //fase
5 o.hasOwnPreperty("toString");  //false,toString是继承属性
  • propertyIsEnumerable()
//propertyIsEnumerable()是hasOwnProperty()的增强版,只有检测到是自有属性这个属性的可枚举为true时它才返回true
var o =inherit({y:2});
o.x=1;
o.propertyIsEnumerable("x"); // true
o.propertyIsEnumerable("y");  //false ,y是继承来的
Object.prototype.propertyIsEnumerable("toString");//false,不可枚举

9.  对象方法

  • toString():返回一个表示调用这个方法的对象值得字符串。
  • toLocaleString:本地字符串化。
  • toJSON():执行序列化,Object.prototype实际上没有这种方法,会用JSON.stringify() 方法调用 toJSON() 。
  • valueOf():与toString()方法类似。 

 

参考文章:

本文为自己知识点搜索整理,若有侵权麻烦留言告知,可删除本文章。谢谢(* ̄︶ ̄)

posted @ 2018-04-23 16:54  IT记录  阅读(274)  评论(0编辑  收藏  举报