- 基本包装类型的生存周期:
- 首先要明白基本包装类型有String, Boolean和Number这三大类。下面举一个String的例子:
1 var s1="text";//创建一个基本包装类型的对象S1 2 var s2=s1.substring(2); 3 console.log(s2);//xt 4 console.log(s1);//text 5 s1.color='red';//这里s1仍存在,但是创建s1.color这个对象之后,再进入下一行,这个对象就会被销毁 6 console.log (s1.color);//undefined 7 console.log(s1);//text 8 9 var s3=new String("another text");//用new来创建一个引用类型实例。 10 var s4=s3.substring (2); 11 s3.color='blue';//引用类型实例具有整个作用域的生存期。 12 console.log(s3.color);//blue 13 console.log(s4);//other text
直接创建var a="xxx"这种方式,则是生成一个基本包装类型的对象,在给它添加属性时,创建的对象如a.color只在这一行存在,下一行就会被销毁。
用new方式创建的引用类型则存在于所在的作用域内。
-
- JS 高级语言程序设计建议不要用Boolean对象,一方面用处不大,另一方面容易引起歧义,因为布尔表达式中的所有对象都会转换成true。
1 var bool_1=new Boolean(false); 2 var test_1=bool_1&&true; 3 console.log(test_1);//true; 4 5 var bool_2=false; 6 var test_2=bool_2&&true; 7 console.log(test_2);//false
-
- Number包装类型对象也重写了toString和valueOf方法。toString方法可以返回数值的n进制,valueOf返回该对象基本类型的数值。另外还多了一个toFixed方法,返回小数四舍五入的位数,一般支持20位以内的小数。另外也可以用toExponential()方法和toPrecision()方法。
1 var num_1=new Number(10); 2 console.log(num_1.toString(2));//convert it into binary scale: 1010 3 console.log(num_1.toFixed(3));//decimal point 10.000
-
- String包装类型的方法比较多,根据书上介绍的方法,总结如下:
1 var str=new String("helloworld"); 2 console.log(str.length);//10 3 //字符方法: 4 console.log(str.charAt(1));//显示下标为1的字符:e 5 console.log(str.charCodeAt(2))//显示下标为2的字符编码:108 6 console.log(str[3]);//直接访问下标为3的字符:l; 7 //字符串操作方法(不修改源对象): 8 console.log(str.concat("!"))//helloworld! 9 console.log(str.substring(1,2));//e, start from index 1 to index 2 10 console.log(str.substr(1,2));//el, start from index 1 to next two elements 11 console.log(str.slice(1,2));//e, e, start from index 1 to index 2 12 13 console.log(str.substring(-2,2));//he, start from index 0 to index 2 14 console.log(str.substr(-2,2));//ld, start from index 10-2 to next two elements. 15 console.log(str.substr(-2,-2));//empty, start from index 10-2 to next 0 elemets; 16 console.log(str.slice(-2,9));//l,start from index 10-2 to 9 17 18 //字符串位置方法: 19 console.log(str.indexOf("l"))//2 20 console.log(str.lastIndexOf("l"))//8 21 //trim方法: 22 var str_2=new String(" Hello World "); 23 console.log(str_2.trim());//Hello World 24 //大小写转换 25 console.log(str.toUpperCase());//HELLOWORLD 26 console.log(str.toLowerCase());//helloworld 27 //字符串模式匹配,会在正则里面专门讲到。
2. Global对象是一个比较特殊的对象,凡是在全局中定义的属性和对象,都属于global对象的属性。如parseInt()和parseFloat()都属于global对象。另外还包括其它方法:
eval()方法是一个十分强大的方法,体现在它可以像一个js解析器一样,将字符串解析成指令。
1 var elem="eval" 2 eval("console.log(elem)")//eval
-
- 虽然没有方法直接访问global对象,但是window对象可以当作global的背锅侠
3. Math对象有几种有用的方法:min(), max(), ceil(), floor(), round():
1 var arr=[1,2,3,4,5]; 2 console.log(Math.max.apply(Math,arr));//5 3 console.log(Math.min.apply(Math,arr));//1 4 console.log(Math.floor(3.14));//3 5 console.log(Math.ceil(3.14));//4 6 console.log(Math.round(3.14));//3 7 console.log(Math.random())//a random decimal number between 0 and 1
浙公网安备 33010602011771号