一. 内置对象
object 对象: ECMAScript 中的所有对象都由这个对象继承而来; Object 对象中的所有属性和方法都会出现在其他对象中
ToString() : 返回对象的原始字符串表示.
ValueOf() : 返回最适合该对象的原始值. 对于许多对象, 该方法返回的值都与 ToString() 的返回值相同
11 种内置对象
包括:
Array ,String , Date, Math, Boolean, NumberFunction, 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 等控制语句并没有自己作用域; 而函数是有自己的作用域的;
- // 函数作用域
- 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();
来源: http://www.bubuko.com/infodetail-3035288.html