一.内置对象
object对象:ECMAScript 中的所有对象都由这个对象继承而来;Object 对象中的所有属性和方法都会出现在其他对象中
ToString() : 返回对象的原始字符串表示。
ValueOf() : 返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同
11种内置对象
包括:
Array ,String , Date, Math, Boolean, Number Function, Global, Error, RegExp , Object
<script language="javascript"> var aa=Number.MAX_VALUE; //利用数字对象获取可表示最大数 var bb=new String("hello JavaScript"); //创建字符串对象 var cc=new Date(); //创建日期对象 var dd=new Array("星期一","星期二","星期三","星期四"); //数组对象 </script>
二.字符串对象
<script> var str1 = "str1"; var str2 = new String("str2"); console.log(str1); console.log(str2); console.log(str1+str2); //字符串长度 console.log(str2.length) //把字符串转换城整数[parseInt]或者小数[parseFloat] var num1="100元"; var num2="1.23"; console.log(parseInt(num1)); console.log(parseFloat(num2)); //输出: //100 //1.23 //split把字符串根据指定字符分割转换成数组 var str="广东省-广州市-天河区"; var ret=str.split("-"); console.log(ret); //输出: //["广东省","广州市","天河区"] // indexOf查找字符串是否含有指定字符 var str="广东省-广州市-天河区"; var target="广州"; console.log(str.indexOf(target)); //输出: //4 //注意,找不到返回的是-1。 //substring截取字符串 //用法: substring(开始的下标,结束的下标) var str="abcdef"; console.log(str.substring(2,3)); // 输出: //c </script>
三:数组对象
1.创建数组
A.通过new Array()进行创建
var arr1=new Array();
B.通过中括号进行创建
var arr2=[];
2.数组方法
<script> var arr1 = [11,22,33,44]; //length 计算数组长度 console.log(arr1.length); //4 //数组的下标 从0开始索引 注意:下标为-1表示没有这个元素,而不是倒数第一个! console.log(arr1[1]); //22 //获取成员在数组中的下标 indexOf console.log(arr1.indexOf(44)); //3 console.log(arr1.indexOf(1111)); //-1 //join拼接 console.log(arr1.join("-")); //11-22-33-44 //tostring 对象变成字符串 var ret = arr1.toString(); console.log(ret); //11,22,33,44 console.log(typeof ret); //string //反转排列 console.log(arr1.reverse()); //[44, 33, 22, 11] //数组的删除元素 //splice(删除开始的下标,删除的成员个数) //返回值就是被删除的元素组成的数组 console.log(arr1.splice(1,2)); //22 33 console.log(arr1); //11 44 //在数组的任意位置添加元素 //splice(要插入的下标位置,0,[插入的元素]) console.log(arr1.splice(1,0,"x","y")); //0表示不删除元素!1表示插入的位置! console.log(arr1); //[11, "x", "y", 22, 33, 44] //栈操作 //数组的末尾添加元素 //push 表示给数组新增成员,返回结果是新的成员的数量! var ret=arr1.push("1","2"); console.log(arr1); //[11, 22, 33, 44, "1", "2"] console.log(ret); //6 //移除数组的最后一个成员 //pop,返回值是被移除的元素! var ret=arr1.pop(); console.log(ret); //[11,22,33] console.log(arr5); //44 //sort排序 var arr2 = [12,23,334,100]; console.log(arr2.sort()); //[100, 12, 23, 334] //排序函数 var arr2 = [12,23,334,100]; function IntSort(a,b){ return a-b; } console.log(arr2.sort(IntSort)); //[12, 23, 100, 334] //多维数组 //多维数组就是数组的嵌套。二维数组就是嵌套两层,三维数组就是嵌套三层。 var arr5=[ ["a","b","c"], ["1","2","3"], ["x","y","z"], ]; //多维数组成员的获取 var arr5=[ ["a","b","c"], ["1","2","3"], ["x","y","z"] ] console.log(arr5[1][2]); //3 // unshift shift //x.unshift(value,...) //x.shift() //使用注解 //x代表数组对象 //value可以为字符串、数字、数组等任何值 //unshift是将value值插入到数组x的开始 //shift是将数组x的第一个元素删除 var arr1=[1,2,3]; arr1.unshift(4,5); console.log(arr1); //结果为[4, 5, 1, 2, 3] arr1.unshift([6,7]); console.log(arr1); //结果为[Array(2), 4, 5, 1, 2, 3] arr1.shift(); console.log(arr1);//结果为[4, 5, 1, 2, 3] </script> </body> </html>
四.函数对象
1.函数语法格式
function 函数名 (参数){ 函数体; return 返回值; }
注意:js的函数加载执行与python不同,它是整体加载完才会执行,所以执行函数放在函数声明上面或下面都可以:
2.函数调用
function func1(a,b){ alert(a+b); } func1(1,2); //3 func1(1,2,3);//3 func1(1); //NaN func1(); //NaN //只要函数名写对即可,参数怎么填都不报错. //-------------------面试题----------- function a(a,b){ alert(a+b); } a(12,23); //35 var a=1; var b=2; a(a,b) //Uncaught TypeError: a is not a function
3.函数的内置对象arguments
function add(a, b) { console.log(a + b);//3 console.log(arguments.length);//2 console.log(arguments);//[1,2] } add(1, 2); //------------------arguments的用处1------------------ function nxAdd() { var result = 0; for (var num in arguments) { result += arguments[num]; } alert(result) //15 } nxAdd(1, 2, 3, 4, 5); //------------------arguments的用处2 ------------------ function f(a, b, c) { if (arguments.length != 3) { //Uncaught Error: function f called with 5 arguments,but it just need 3 arguments throw new Error("function f called with " + arguments.length + " arguments,but it just need 3 arguments") } else { alert("success!") } } f(1, 2, 3, 4, 5)
4.匿名函数
匿名函数,没有函数名的函数,这种函数一般使用变量来存放。匿名函数的声明方式类似普通函数,一般使用变量保存起来
语法格式 (function(){ //函数体 })();
// 匿名函数 或者自执行函数 var func = function(arg){ return "tony"; }; //匿名函数的应用 (function(){ alert("tony"); //弹出tony } )(); (function(arg){ console.log(arg); })('123') //123
注意匿名函数整体有个括号括住的!
还可以在函数定义前加上“~”和“!”等符号来定义匿名函数
!function(){ alert('hello!'); }()
五.函数作用域
函数的作用域链和闭包
作用域
js的作用域和py相似,if while等控制语句并没有自己作用域;而函数是有自己的作用域的;
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
|
/ / 函数作用域 if ( 1 = = 1 ){ var s = 12 ; } console.log(s); / / 12 function f(){ var temp = 666 ; } f(); / / console.log(temp); / / Uncaught ReferenceError: temp is not defined / / 嵌套函数作用域 var city = 'beijing' ; function func(){ var city = 'shanghai' ; function inner(){ var city = 'shenzhen' ; console.log(city); } inner(); } func(); / / shengzhen var city = 'beijing' ; function Bar(){ console.log(city); } function func(){ var city = 'shanghai' ; return Bar; } var ret = func(); ret(); / / beijing / / 闭包 var city = 'beijing' ; function func(){ var city = "shanghai" ; function inner(){ / / var city = "langfang" ; console.log(city); / / shanghai } return inner; } var ret = func(); ret(); |