JavaScript基础之六——内置对象 一、构造对象 JavaScript中的一些数据都是对象,对象实际上是属性与方法的包装。并不像其他类似Swift/OC/Java类的面向对象语言,在目前JavaScript的实现中并没有类的概念,开发者有如下两种方式来进行对象的构造:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 var obj = new Object ();obj.name = "jaki" ; obj.age = 25 ; console .log(obj);var obj2 = { name:"jaki" , age:25 , show:function ( ) { console .log(this .name+"--" +this .age); } }; obj2.show();
回顾Swift语言的对象创建方法,是通过类调用构造方法,因此,在JavaScript中,也可以通过函数来模拟类的功能,此类的函数可以称为构造函数,示例如下:
1 2 3 4 5 6 7 8 9 10 function Person (name,age ) { this .name = name; this .age = age; this .show = function ( ) { console .log(this .name+"--" +this .age); }; } var p = new Person("jaki" ,25 );p.show();
JavaScript中的对象呗构造出来后,依然可以为其动态添加属性或方法,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 function Person (name,age ) { this .name = name; this .age = age; this .show = function ( ) { console .log(this .name+"--" +this .age); }; } var p = new Person("jaki" ,25 );p.show(); p.phone = "1111" console .log(p.phone);
二、数值对象Number 在JavaScript中,数值是一种基本数据类型,但是Number是数值对象,可以理解为对数值的包装。并且JavaScript中的数值只有一种类型,可以创建整数,也可以创建小数,如下:
1 2 3 4 5 var c = 10 ;var c1 = 3.14 ;
也支持使用科学计数法来对数值进行描述,示例如下:
1 2 3 4 var c2 = 1.2e5 ;var c3 = 123e-5 ;console .log(c2,c3);
在JavaScript中,使用前缀0来描述八进制数值,使用前缀0x来描述十六进行的数值,示例如下:
1 2 3 4 5 6 var c4 = 017 ;console .log(c4); var c5 = 0x11 ;console .log(c5);
需要注意:和其他语言不同,JavaScript中不能随意的数值前面加0,否则会被认为是八进制计数。
关于Number,如果使用new来进行构造,会返回一直数值对象,其中可以穿入一个参数作为数值对象的原始值,如果将Number()作为函数来使用,则会直接返回一个具体的数值,示例如下:
1 2 3 4 5 6 7 8 var objc = new Number (15 );console .log(objc);var objc2 = Number (2 );console .log(objc2); var objc3 = Number ("c" );console .log(objc3);
Number中内置了一些常用的属性与方法,示例如下:
1 2 3 4 5 6 7 8 9 10 11 console .log(Number .MAX_VALUE);console .log(Number .MIN_VALUE);console .log(Number .NaN);console .log(Number .NEGATIVE_INFINITY);console .log(Number .POSITIVE_INFINITY);
对象实例的常用方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var c6 = 100 ;console .log(c6.toString());console .log(c6.toString(36 ));console .log(c6.toLocaleString());var c7 = 3.1415926 ;console .log(c7.toFixed(3 ));console .log(c7.toExponential(1 ));console .log(c7.toPrecision(4 ));console .log(c7.valueOf());
需要注意,对于进制转换,toString()方法支持2-36进制,这很好理解,数字0-9加上26个英文字母,最多可以表达36个数字。
三、字符串对象String JavaScript语言中的字符串对象封装了大量的操作方法,需要注意,JavaScript中的String对象是不可变的,所有对字符串的操作都是返回一个新的字符串。String对象中最常用的一个属性为length属性,这个属性可以获取字符串的长度,示例如下:
1 2 3 4 5 var str1 = new String ("HelloWorld" );var str2 = String ("HELLO" );console .log(str1.length);
String对象中封装的一些常用方法示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 var str3 = String .fromCharCode(100 ,102 ,103 ,104 );console .log(str3);console .log(str1.anchor("label" )); console .log(str1.big());console .log(str1.small());console .log(str1.blink());console .log(str1.bold());console .log(str1.charAt(1 ));console .log(str1.charCodeAt(1 ));console .log(str1.concat("1" ,"2" ,"3" ));console .log(str1.fixed());console .log(str1.fontcolor('red' ));console .log(str1.fontsize(24 ));console .log(str1.indexOf('l' ,3 ));console .log(str1.italics());console .log(str1.lastIndexOf("l" ,10 ));console .log(str1.link("www.baidu.com" ));console .log(str1.localeCompare("Z" ));console .log(str1.match("ell" ));console .log(str1.match(/ell/ ));console .log(str1.replace("Hello" ,"hahaha" ));console .log(str1.search("World" ));console .log(str1.slice(0 ,5 ));console .log(str1.split('o' ,10 ));console .log(str1.strike());console .log(str1.sub());console .log(str1.substr(0 ,5 ));console .log(str1.substring(5 ,10 ));console .log(str1.sup());console .log(str1.toLocaleLowerCase());console .log(str1.toLowerCase());console .log(str1.toLocaleUpperCase());console .log(str1.toUpperCase());console .log(str1.valueOf());
四、日期对象Date JavaScript中提供丰富的日期处理方法,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 var date1 = new Date ();console .log(date1);var date2 = Date ();console .log(date2);console .log(date1.getDate()); console .log(date1.getDay()); console .log(date1.getMonth()); console .log(date1.getFullYear()); console .log(date1.getHours());console .log(date1.getMinutes());console .log(date1.getSeconds());console .log(date1.getMilliseconds());console .log(date1.getTime());console .log(date1.getTimezoneOffset());console .log(date1.getUTCDate());console .log(date1.getUTCDay());console .log(date1.getUTCMonth());console .log(date1.getUTCFullYear());console .log(date1.getUTCHours());console .log(date1.getUTCMinutes());console .log(date1.getUTCSeconds());console .log(date1.getUTCMilliseconds());console .log(Date .parse(date1));date1.setDate(1 ); date1.setMonth(2 ); date1.setFullYear(2011 ); date1.setHours(10 ); date1.setMinutes(20 ); date1.setSeconds(23 ); date1.setMilliseconds(100 ); console .log(date1);date1.setTime(1483599203000 ); console .log(date1);date1.setUTCDate(3 ); date1.setUTCMonth(10 ); date1.setUTCFullYear(2020 ); date1.setUTCHours(22 ); date1.setUTCMinutes(22 ); date1.setUTCSeconds(34 ); date1.setUTCMilliseconds(112 ); console .log(date1);console .log(date1.toString());console .log(date1.toTimeString());console .log(date1.toDateString());console .log(date1.toUTCString());console .log(date1.toLocaleString());console .log(date1.toLocaleTimeString());console .log(date1.toLocaleDateString());console .log(Date .UTC(2012 ,1 ,1 ,1 ,1 ,1 ,1 ));
五、数组对象Array 数组对象用于存放一组数据,JavaScript语言并不像Swift语言那样强调类型,因此数组中存放的元素类型十分自由,JavaScript中数组的相关方法示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 var array1 = new Array ();var array2 = new Array (5 );var array3 = new Array (1 ,2 ,3 ,4 )console .log(array3.length);console .log(array3.concat([5 ,6 ],['q' ,'w' ]));console .log(array3.join("-" ));array3.pop(); console .log(array3);array3.push(5 ); console .log(array3);array3.reverse(); console .log(array3);array3.shift(); console .log(array3);array3.unshift(1 ,1 ,1 ); console .log(array3);array3.sort(function (a,b ) { if (a>b) { return true ; }else { return false ; } }); console .log(array3);array3.splice(0 ,2 ,'c' ,5 ); console .log(array3);console .log(array3.toString());console .log(array3.toLocaleString());
需要注意,数组的排序方法sort()中需要传入一个排序函数,这个函数中会传入两个参数,分别描述数组中相邻的两个元素,如果需要交换位置,返回true即可,否则返回false即可。另外,数组的toString()方法与join()方法作用相似,不同的是join()方法更加自由,开发者可以通过参数决定进行拼接的方式,如果不传参数,则默认也会以逗号进行分割拼接。
六、关于Boolean对象 Boolean对象用来描述逻辑值,JavaScript中的Boolean对象可以理解为对布尔值的一种包装,当使用构造函数来进行Boolean对象的创建时,如果不传参数,默认会构造false值的对象包装,如下:
1 2 var b1 = new Boolean ();console .log(b1);
如果将Boolean()当做函数来使用,将会返回一个基本布尔值,如下:
1 2 var b2 = Boolean ();console .log(b2);
在创建布尔值时,下面这些传参都将创建包装false的布尔对象:
1 2 3 4 5 6 7 var myBoolean=new Boolean ();var myBoolean=new Boolean (0 );var myBoolean=new Boolean (null );var myBoolean=new Boolean ("" );var myBoolean=new Boolean (false );var myBoolean=new Boolean (NaN );var myBoolean=new Boolean (undefined );
除了上面所列举的参数情况外,其余的都将构造true包装对象。
七、JavaScript中的数学对象及方法 JavaScript中还内置了一个Math数学对象,这个对象中封装了许多数学中常用的常数和算术方法,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 console .log(Math .E);console .log(Math .LN2);console .log(Math .LN10);console .log(Math .LOG2E);console .log(Math .LOG10E);console .log(Math .PI);console .log(Math .SQRT1_2);console .log(Math .SQRT2);console .log(Math .abs(-5 ));console .log(Math .acos(0.5 ));console .log(Math .asin(0.5 ));console .log(Math .atan(1 ));console .log(Math .atan2(1 ,0 ));console .log(Math .ceil(1.3 ));console .log(Math .floor(1.3 ));console .log(Math .log(10 ));console .log(Math .max(1 ,2 ));console .log(Math .min(1 ,2 ));console .log(Math .pow(10 ,2 ));console .log(Math .random());console .log(Math .round(1.3 ));console .log(Math .sin(2 ));console .log(Math .cos(2 ));console .log(Math .tan(1 ));
前端学习新人,有志同道合的朋友,欢迎交流与指导,QQ群:541458536