js(2)——表达式与运算符
《JavaScript权威指南》读后笔记2 ———— 表达式与运算符 ————2018-04-23
目录:
- 位运算符
- eval()
- instanceof 运算符
- delete 运算符
- 属性特性
- 创建对象
- 关联数组
- 检测数组 :判断属性是否存在于某个对象中,通过
- 对象方法
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()方法类似。
参考文章:
本文为自己知识点搜索整理,若有侵权麻烦留言告知,可删除本文章。谢谢(* ̄︶ ̄)