JS_常用对象总结

javaScript两大基本数据类型

    1:基本数据类型

        number string boolean null undefined

    2:应用数据类型

        数组、objectMathDate正则表达式、window、dom

    con:

        动态添加属性

            基本数据类型不能添加动态属性

            引用数据类型可以动态添加属性

        传参:

            假如传入的实参时基本类型,实际上传的值的拷贝

            假如传入的实参时引用类型,实际上传的值的地址

作用域:有效范围

    全局作用域 & 全局变量

        函数之外都是全局的,包括代码块内部声明

    局部作用域 & 局部变量

        函数内部定义的变量

    ES6:块级作用域

    con:

        建议变量使用局部变量

        隐式的全局变量:y = 2; //不用var 声明

字符串

字符串API整理:

var str = 'hello';

concat():

    var res = str.concat('wold','!!!');

substr():

    var url = "http://www.baidu.com?username=admin&psw=123456";

    var idx = url.indexOf('?');

    var res1 = url.substr(idx+1); //从idx+1处开始

    var res1 = url.suubstr(idx+1 , length)

    //开始序号-结束序号,且不包含末尾序号位置

    var res1 = url.slice(start,end);

    //substring:开始序号-结束序号,且不包含末尾序号位置,并且支持:start>end,表示截取范围

    var res1 = url.substring(start,end);

    //区别

    slicesubstringsubstr(start):默认都是从start到末尾

    slice(负数):表示从末尾开始取值

replace():网站内容和谐

    //replace()只替换一个

    var res = str.replace(source,target);   

    //[1]

    var index=0;

    index = str.indexOf(source);

    while(index!==-1){

    }

    //[2]

    while(res =str.replace(source,target) !== null){

        console.log(res);

        str = res;

    }

    //replaceAll()

split():字符串分割

字符串无reverse();数组有!

String.fromCharCode()  --相反--  str.charCodeAt()

//

String.prototype.myReplace = function(f, e) {

var reg = new RegExp(f, "g");

return this.replace(reg, e);

        }

var newStr = str.myReplace('tmd', '');

console.log(newStr);


Math:与其他全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。

属性:PI 、 E、sqrt1_2

    方法:  abs()

            ceil()

            floor()

            round()

            random():[0,1):返回一个 0 到 1 之间的伪随机数。

Date

    var now = new Date();

    now.getFullYear()

    now.getMonth()---特殊从0开始

    now.getDate()

    now.getDay()---星期几,并且从星期日开始

    now.getHour()

    now.getMinute()

    now.getSeconds()

    now.getMilliseconds()

    ---1970.1.1 --->指定时间

    now.getTime()---总毫秒数 === now.valueOf()

    //h5新增 Date.now() ----兼容性额外难题


函数

函数:具有一定功能的代码块

    -复用

    -内置函数&自定义

    --建议形参小于5个

    ---ES6支持给默认值

    ---不支持返回多个基本类型

    --函数无返回值,返回值为 undefined

    ---arguments不是数组,但有:arguments.length()

    -funtion定义的函数,可以先定义后调用,也可以先调用后定义

    -匿名函数——没有名字的函数,函数表达式必须先定义后调用

JS代码执行过程:

    1 预解析

    2 执行

数组

数组常用API:

    push() unshift()

    pop() shift()

    splice()

    slice()

    indexOf()   lastIndexOf()

    forEach() 高阶函数——函数的参数是一个函数或者返回值是一个函数

        arr.forEach(function(item,index,array){

            //item: 数组每个元素

            //index:数组元素索引

        });

    //明白一点:函数也是对象!——所以不要被不熟悉所吓倒,即一切反动派都是纸老虎!

    some    every   map     filter  reduce  sort

    concat  join    reverse    

总结案例:

    1:数组去重

        (思路1:判断原数组内是否重复)indexOf() === lastIndexOf()

        (思路2:判断新数组内是否重复)

    2: 数组自动添加(弱类型)

        var newArr  = new Array();

        newArr[newArr.length] = 1;

//添加不限制个数

// arr.push()

// arr.unshift()

// arr.pop()

// arr.shift()

// 1.从角标pos位置处删除mount个元素

// arr.splice(pos,mount)

// 2.从角标pos处插入元素ele1

// ex: arr.splice(pos,0,ele1);

// 替换 角标pso位置处的n个元素

// ex: arr.splice(pos,mout_n,ele1,ele2,...,elen)

//arr.slice(start,end)

//arr.join()  //把数组的元素用指定的符号拼接为一个大的字符串

// 不传参默认以逗号连接

// arr.join("-");

//concat()

//reverse()  //逆序

高阶应用:

    Arguments 不是数组类型,而是对象。【所有的实参都在这个对象上】

    arguments.length(形参)   &&&  函数.length(实参)

    arguments.callee : 获取对应函数

    -函数无返回值,获取变量为 undefined

预解析:

    function定义的函数,可以先定义后调用,也可以先调用后定义

    匿名函数

    将函数或者变量的声明提升,赋值并不提升

==============

数组自增:弱类型

    arr[arr.length] = temp;

高阶函数:函数的参数是一个函数或者返回值是一个函数

    //遍历

    arr.forEach(function(item,index,arr){

        //实现本质:对数组遍历调用函数

    });

    //筛选:判断是否有满足条件的元素

    //找到第一个满足条件,则终止循环,返回true;找不到,则返回false

    //返回值为布尔值

    var bool = arr.some(function(item,index,arr){

        return item>60;

    });

    //filter

    //把满足条件的筛选出来,放到新的数组中

    //返回值为数组

    var newArr = arr.filter(function(item,index,array){

        return item%2===0;

    });

    //every

    //判断数组元素是否都满足条件

    //数组所有元素都满足条件,返回true;假如碰到第一个不满足的,终止循环,返回false

    var flag = arr.every(function(item,index,arr){

        return item>60;

    });

    //map

    //对元素进行遍历(迭代处理)

    //返回:根据原数组产生长度一样的新数组----新数组的每一个元素由原数组对应的元素带入函数参数后的返回值

    var newArr3 = arr.map(function(item,index,arr){

        return item+1;

    });

    //reduce

    //function的参数1:

        //参数1:表示累计值默认回去数组的第一个值,下次循环会取到上一次的值

        //参数2:表示当前的值,第一次会取数组第二个值

        //参数3:表示当前值对应的索引

        //参数4:表示原数组

    //参数2: 设定start初始值

    //返回值:最后一个元素带入函数之后的返回值

    var sum = arr.reduce(function(start,item,index,arr){

        return start+item;

    });

    var sum = arr.reduce(function(start,item,index,arr){

        return start+item;

    },0);

    var sum = arr.reduce(function(start,item,index,arr){

        return start+item;

    },3);

    //拼接数组,返回新数组

    var res = arr.concat(arr1,arr2,arr3...)

    //返回字符串,将元素以 : 连接

    var str = arr.join(':')

    //本质:更改数组结构,返回相应的地址

    //逆序,并且改变原数组结构

    var newArr = arr.reverse()

    //排序,返回值与原数组均改变结构

    //sort:默认是按字符串比较,并且空的默认更小

    //     

    var res = arr.sort()

    var res = arr.sort(function(a,b){

        return a-b; //升序

        return b-a; //降序

    });


alert("hello");  //弹出警告框

prompt("input");  //弹出输入框

原文地址:https://www.cnblogs.com/macro-renzhansheng/p/13024170.html