JS对象操作(in、instanceof、delete)运算符
in运算符能够检测左侧操作数是否为右侧操作数的成员。其中,左侧操作数是一个字符串,或者可以转换为字符串的表达式,右侧操作数是一个对象或数组。
var o = { //定义对象
a : 1, //定义属性a
b : function() {} //定义方法b
}
console.log("a" in o); //返回true
instanceof运算符能够检测左侧的对象是否为右侧类型的示例。
var a = new Array(); //定义数组
console.log(a instanceof Array); //返回true
delete运算符能够删除指定对象的属性、数组元素或变量。如果删除操作成功,则返回 true;否则返回 false。
JS &、|、^和~(逻辑位运算符)
- “&”运算符(位与)用于对两个二进制操作数逐位进行比较
- “|”运算符(位或)用于对两个二进制操作数逐位进行比较
- “^”运算符(位异或)用于对两个二进制操作数逐位进行比较
- “~”运算符(位非)用于对一个二进制操作数逐位进行取反操作。
JS移位运算符(<<、>>和>>>)
移位运算就是对二进制进行有规律低移位。移位运算可以设计很多奇妙的效果,在图形图像编程中应用广泛。
“<<”运算符执行左移位运算。在移位运算过程中,符号位始终保持不变。如果右侧空出位置,则自动填充为 0;超出 32 位的值,则自动丢弃。
“>>”运算符执行有符号右移位运算。与左移运算操作相反,它把 32 位数字中的所有有效位整体右移,再使用符号位的值填充空位。移动过程中超出的值将被丢弃。
“>>>”运算符执行五符号右移位运算。它把无符号的 32 位整数所有数位整体右移。对于无符号数或正数右移运算,无符号右移与有符号右移运算的结果是相同的。
JS new运算符
new 是一个运算符,可以创建对象,初始化实例。其语法格式如下:
new contructor(arguments)
constructor 必须是一个构造函数表达式,参数 arguments 可有可无,参数之间用逗号分隔。如果没有逗号,可以省略小括号。
for/in语句
for ( [var] variable in <object | array)
statement
variable 表示一个变量,可以在其前面附加 var 语句,用来直接声明变量名。in 后面是一个对象或数组类型的表达式。在遍历对象或数组过程中,把或取的每一个值赋值给 variable。
然后执行 statement 语句,其中可以访问 variable 来读取每个对象属性或数组元素的值。执行完毕,返回继续枚举下一个元素,以此类推知道所有元素都被枚举为止。
- 使用 for/in 迭代对象属性,把每个属性值寄存到一个数组中。
var o = {x : 1,y : true,z : "true"}, //定义包含三个属性的对象
a = [], //临时寄存数组
n = 0; //定义循环变量,初始化为0
for (a[n++] in o); //遍历对象o,然后把所有属性都赋值到数组中
- for/in 适合枚举不确定长度的对象。
for (var i = 0 in document) {
document.write("document." + i + "=" +document[i] +"<br />");
- for/in 能够枚举可枚举的属性,包括原生属性和继承属性。
Array.prototype.x = "x"; //自定义数组对象的继承属性
var a = [1,2,3]; //定义数组对象,并赋值
a.y = "y" //定义数组对象的额外属性
for (var i in a) { //遍历数组对象a
document.write(i + ": " + a[i] + "<br />");
}
JS异常处理(try+catch+finally+throw)
try{
//调试代码块
}
catch(e) {
//捕获异常,并进行异常处理的代码块
}
finally{
//后期清理代码块
}
在正常情况下,JavaScript 按顺序执行 try 子句中的代码,如果没有异常发生,将会忽略 catch 子句,跳转到 finally 子句中继续执行。
如果在 try 子句运行时发生错误,或者使用 throw 语句主动抛出异常,则执行 catch 子句中的代码,同时传入一个参数,引用 Error 对象。
不管 try 语句是否完全执行,finally 语句最后都必须要执行,即使使用了跳转语句跳出了异常处理结构,也必须在跳出之前先执行 finally 子句。
throw语句
throw 语句能够主动抛出异常.当执行 throw 语句时,程序会立即停止执行。只有当使用 try/catch 语句捕获到被抛出的值时,程序才会执行。
在抛出异常时,JavaScript 也会停止程序的正常执行,并跳转到最近的 catch 子句。如果没有找到 catch 子句,则会检查上一级的 catch 子句,以此类推,直到找到一个异常处理器为止。如果在程序中没有找到任何异常处理器,将会显示错误。
JS字符串拼接/连接(3种方式)
- 使用加号运算符
- 使用concat()方法.使用字符串 concat() 方法可以把多个参数添加到指定字符串的尾部。
- 使用join()方法
var s = "JavaScript" , a = [];
for (var i = 0; i < 1000; i ++) {
a.push(s);
var str = a.join("");
a = null;
document.write(str);
JS字符串查找(6种方法)
- charAt(n) 返回字符串中的第 n 个字符
- charCodeAt(n) 返回字符串中的第 n 个字符的代码
- indexOf(str,start) 检索字符串,从指定位置返回指定子字符串的下标位置
- lastIndexOf(str,start) 从后向前检索一个字符串
- match(RegExp) 找到一个或多个正则表达式的匹配
- search(RegExp) 检索与正则表达式相匹配的子串
JS截取字符串(3种方法)
substr() 方法能够根据指定长度来截取子字符串。
ECMAScript 不再建议使用该方法,推荐使用 slice() 和 substring() 方法。
slice() 和 substring() 方法都是根据指定的起止下标位置来截取字符串,它们都可以包含两个参数,第一个参数表示起始下标,第二个参数表示结束下标。
JS字符串替换(使用replace()方法)
replace() 方法的第二个参数可以使用函数,当匹配时会调用该函数,函数的返回值将作为替换文本使用,同时函数可以接收以$为前缀的特殊字符,用来引用匹配文本的相关信息。
var s = 'javascript is script , is not java.'; //定义字符串
var f = function () {
for (var i = 0; i < arguments.length; i++) {
console.log("第" + (i + 1) + "个参数的值:"+ arguments[i]);
}
console.log("-----------------------------");
}
var a = s.replace(/(w+)/g, f);
JS字符串大写和小写之间的转换(4种方法)
- toLocaleLowerCase() 把字符串转换成小写
- toLocaleUpperCase() 将字符串转换成大写
- toLowerCase() 将字符串转换成小写
- toUpperCase() 将字符串转换成大写
JS字符串比较大小
JavaScript 能够根据字符的 Unicode 编码大小逐位比较字符串大小。
-
直接比较字符串大小
在 JavaScript 中,可以直接使用 >、<、==、全等 来比较两个字符串的大小,就像比较两个数字一样。
-
使用 localeCompare() 方法
使用字符串的 localeCompare() 方法,可以根据本地约定顺序来比较两个字符串的大小。
JS字符串和数组之间的转换
使用字符串的 split() 方法可以根据指定的分隔符把字符串切分为数组。
- 如果参数为空字符串,则 split() 方法能够按单个字符进行切分,然后返回与字符串等长的数组。
- 如果参数为空,则 split() 方法能够把整个字符串作为一个元素的数组返回。
- 如果参数为正则表达式,则 split() 方法能够以匹配文本作为分隔符进行切分。
- split() 方法支持第二个参数,该参数是一个可选的整数,用来指定返回数组的最大长度。如果设置了该参数,则返回的数组长度不会大于这个参数指定的值;如果没有设置该参数,那么整个字符串都被分割,不会考虑数组长度。
如果使用数组的 join() 方法,可以把数组元素连接为字符串。
JS去除字符串前后空格
ECMAScript 5 为 String 新增了 trim() 原型方法,用以从字符串中去除前导空字符、尾随空字符和行终止符。该方法在表达处理中非常实用。