当前位置: 移动技术网 > IT编程>开发语言>JavaScript > js基础方法总结串联

js基础方法总结串联

2020年07月14日  | 移动技术网IT编程  | 我要评论

js的数据类型

五种基本数据类型

Number

String

Boolean

undefined

null

引用数据类型

Object对象

  • 对象的概念

    在 JavaScript 中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。

    • 对象的属性

      属性:事物的特征,在对象中用属性来表示(常用名词)

    • 对象的方法

      方法:事物的行为,在对象中用方法来表示(常用动词)

    • 对象的分类

      • 本地对象

        js中的本地对象包括Number、String、Boolean、Array、Function、Date、Object、Global、Math、RegExp以及各种错误类对象。
        其中Global和Math这两个对象又被称为“内置对象”,这两个对象在脚本程序初始化时被创建,不必实例化这两个对象。
        内置对象(built-in object)定义为“由 ECMAScript 实现提供的,在 ECMAScript 程序开始执行时出现”。这意味着开发者不必明确实例化内置对象,它已被实例化了。

      • 宿主对象

        宿主对象就是执行JS脚本的环境提供的对象。对于嵌入到网页中的JS来说,其宿主对象就是浏览器提供的对象,所以又称为浏览器对象,如IE、Firefox等浏览器提供的对象。不同的浏览器提供的宿主对象可能不同,即使提供的对象相同,其实现方式也大相径庭!这会带来浏览器兼容问题,增加开发难度。浏览器对象有很多,如Window和Document等等。

      • 自定义对象

        顾名思义,就是开发人员自己定义的对象。JS允许使用自定义对象,使JS应用及功能得到扩充。

  • 创建对象的三种方法

    • 使用对象字面量创建对象

      就是花括号 { } 里面包含了表达这个具体事物(对象)的属性和方法;{ } 里面采取键值对的形式表示 .
      键:相当于属性名
      值:相当于属性值,可以是任意类型的值(数字类型、字符串类型、布尔类型,函数类型等)

      例:var star = {
      name : ‘zhangmeili’,
      age : 18,
      sex : ‘女’,
      sayHi : function(){
      alert(‘今天很开心’);
      }
      };

    • 利用 new Object 创建对象

      通过内置构造函数Object创建对象,此时andy变量已经保存了创建出来的空对象
      给空对象添加属性和方法

      var star = new Obect();
      例:star.name = ‘zhangmeili’;
      star.age = 18;
      star.sex = ‘女’;
      star.sayHi = function(){
      alert(‘今天很开心’);
      }

    • 利用构造函数创建对象

      构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与 new 运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面
      构造函数的封装格式:
      function 构造函数名(形参1,形参2,形参3) {
      this.属性名1 = 参数1;
      this.属性名2 = 参数2;
      this.属性名3 = 参数3;
      this.方法名 = 函数体;
      }
      构造函数的调用格式
      var obj = new 构造函数名(实参1,实参2,实参3)

      • 注意事项

        注意事项
        构造函数约定首字母大写。
        函数内的属性和方法前面需要添加 this ,表示当前对象的属性和方法。
        构造函数中不需要 return 返回结果。
        当我们创建对象的时候,必须用 new 来调用构造函数。

      • 其他解释

        构造函数,如 Stars(),抽象了对象的公共部分,封装到了函数里面,它泛指某一大类(class)
        创建对象,如 new Stars(),特指某一个,通过 new 关键字创建对象的过程我们也称为对象实例化

      • new的作用

        1.在构造函数代码开始执行之前,创建一个空对象;
        2.修改this的指向,把this指向创建出来的空对象;
        3.执行函数的代码
        4.在函数完成之后,返回this—即创建出来的对象

  • 便历对象

    • for…in

      for (变量 in 对象名字) {
      // 在此执行代码
      }
      语法中的变量是自定义的,它需要符合命名规范,通常我们会将这个变量写为 k 或者 key。
      for (var k in obj) {
      console.log(k); // 这里的 k 是属性名
      console.log(obj[k]); // 这里的 obj[k] 是属性值
      }

  • Array(数组对象)

    • 创建数组的方法

      • 字面量方式

        var arr = [1,“test”,true];

      • new Array()

        var arr = new Array();
        注意:上面代码中arr创建出的是一个空数组,如果需要使用构造函数Array创建非空数组,可以在创建数组时传入参数

        参数传递规则如下:
        1.如果只传入一个参数,则参数规定了数组的长度
        2.如果传入了多个参数,则参数称为数组的元素

    • 数组的方法

      • push()

        将一个或多个元素添加到数组的末尾,并返回数组的新长度。改变原数组
        参数:要添加的元素
        改变原数组
        返回值为数组的 新长度

      • unshift()

        将一个或多个元素添加到数组的开头,并返回数组的新长度。改变原数组
        参数:要添加的元素
        改变原数组
        返回值为数组的 新长度

      • pop

        从数组的末尾移出并返回一个元素,若是空数组则返回undefined。改变原数组
        参数:无
        改变原数组
        返回值为删除的数组的元素

      • shift

        从数组的开头移出并返回一个元素,若是空数组则返回undefined。改变原数组
        参数:无
        改变原数组
        返回值为删除的数组的元素

    • 检索数组的方法

      • includes(item, start)

        用于确定数组中是否含有某个元素
        参数 item 要检索的数组元素
        start 开始的位置(可选)
        返回值 有则true 无则false
        不改变原数组

      • indexOf(item,start)

        检测当前值在数组中第一次出现的位置索引,
        参数 item是查找的元素。start(可选),默认为 0,规定在数组中开始检索的位置(包含本身的位置)。
        返回值 返回值是在数组中可以找到给定值的第一个索引,如果不存在,则返回-1
        不改变原数组

      • lastIndexOf(item,start)

        检测当前值在数组中最后一次出现的位置索引,从数组的后面向前查找,从 start处开始。(从后往前查找)
        参数 item是查找的元素。
        start可选,默认为 0,规定在数组中开始检索的位置(包含本身的位置)
        返回值 返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1
        不改变原数组

    • 数组转换成字符串

      • join()

        将数组的所有元素连接到一个字符串中
        参数 字符之间的连接符号(可选)
        返回值为一个新的字符串
        不改变原数组

      • toString()

        返回一个字符串,表示指定的数组及其元素
        没有参数
        返回值为一个新的字符串
        不改变原数组

    • 数组的其他方法

      • arr.splice(n,x,m)

        对数组进行增删改
        参数 n 为开始的索引
        x为删除的长度
        m为替换删除的元素
        返回值
        增加时返回空数组
        删除时返回删除的数组元素组成的新数组
        修改时返回新修改后的数组
        改变原数组
        对数组进行增加
        ary.splice(n,0,m)
        从索引n开始删除0项,把m或者更多的内容插入到索引n的前面
        修改:ary.splice(n,x,m)
        从索引n开始删除x个,m替换删除的部分把原有内容删除掉,然后用新内容替换掉
        删除:ary.splice(n,x)
        从索引n开始删除x个内容(如果第二个参数省略,则从n删除到末尾)

      • arr.slice(n,m)

        复制元数组的部分内容
        参数:从索引n开始查找到m处(不包含m)
        m可以省略 省略的话复制从n开始的后面的所有的元素
        返回值:返回一个新数组
        是否改变原数组:不改变
        array.slice(0)原样输出内容,可以实现数组克隆

      • arr.reverse()

        把数组倒过来排列
        参数:无
        返回值:倒序后新数组
        改变原数组

      • arr.concat()

        用于连接两个或多个数组
        参数:参数可以是具体的值,也可以是数组对象。可以是任意多个
        返回值:返回连接后的新数组
        是否改变原数组:不改变

      • 清空数组

        1.arr=;
        2.arr.length=0;
        3.arr.splice(0,arr.length);

    • 数组对象的方法

      • sort()

        对数组的元素进行排序(默认是从小到大来排序 并且是根据字符串来排序的)

        参数:可选(函数) 规定排序规则 默认排序顺序为按字母升序
        返回值:排序后新数组
        是否改变原数组:改变
        (sort在不传递参数情况下,只能处理10以内(个位数)数字排序)
        var ary1 = [32,44,23,54,90,12,9];
        ary11.sort(function(a,b){
        // return a-b; // 结果[9, 12, 23, 32, 44, 54, 90]
        // return b-a; // 结果[90, 54, 44, 32, 23, 12, 9]
        })
        console.log(ary1);

        • sort()的模拟算法

      • 遍历数组forEach()

        语法:
        array.forEach(function(currentValue, index, arr))
        例:
        var ary1 = [‘a’,‘b’,‘c’,‘d’];
        var item = ary1.forEach(
        function(currentValue,index,ary1){
        console.log(currentValue,index,ary1);
        }
        )
        参数function(currentValue, index, arr)(必须有)
        数组中每个元素需要调用的函数。 函数参数:参数描述currentValue必需。当前元素index可选。当前元素的索引值。arr可选。当前元素所属的数组对象。

  • String字符串对象

    • 字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串。

    • 字符方法

      • charAt()

        返回指定索引处的字符。索引范围为从 0 到 length() - 1。
        参数:index – 字符的索引。
        返回值:返回指定索引处的字符。

      • charCodeAt()

        可返回指定位置的字符的 Unicode 编码。
        参数:index – 字符的索引。
        返回值:返回在指定的位置的字符的 Unicode 编码。

      • str[index]

        str[index]:和charAt()等效

    • 字符串操作方法

      • concat()连接两个字符串

        用于连接两个或多个字符串
        参数:string1, string2, …, stringX
        必需。将被连接为一个字符串的一个或多个字符串对象。
        返回值:两个或多个字符串连接后生成的新字符串

      • slice(start,end)提取字符串的片断

        提取字符串的片断,并在新的字符串中返回被提取的部分。从start位置开始,截取到end位置,end取不到。
        参数::start必须. 要抽取的片断的起始下标。第一个字符位置为 0
        end可选。 紧接着要截取的片段结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。
        返回值:提取的字符串

      • substring(from,to)用于提取字符串中介于两个指定下标之间的字符

        用于提取字符串中介于两个指定下标之间的字符.
        参数from必需。一个非负的整数,规定要提取的子串的第一个字符在 string Object 中的位置。
        to可选。一个非负的整数,规定要提取的子串结束位置的下标(不包含)。 如果省略该参数,那么返回的子串会一直到字符串的结尾。
        返回值:提取后生成的新字符串。

      • substr(start,length)可在字符串中抽取从 开始 下标开始的指定数目的字符

        可在字符串中抽取从 开始 下标开始的指定数目的字符
        参数:start必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。length可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。
        返回值:抽取从 开始 下标开始的指定数目的字符

    • 位置方法

      • indexof(searchvaluestart

        返回指定内容在元字符串中的位置
        参数:
        searchvalue必需。规定需检索的字符串值。start可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 string Object.length - 1。如省略该参数,则将从字符串的首字符开始检索。
        返回值:查找指定字符串第一次出现的位置,如果没找到匹配的字符串则返回 -1。

      • lastIndexOf(searchvalue,start)

        该方法将从后向前检索字符串,但返回是从起始位置 (0) 开始计算子字符串最后出现的位置。 看它是否含有字符串。
        参数:
        searchvalue必需。规定需检索的字符串值。start可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的最后一个字符处开始检索。
        返回值:查找的字符串最后出现的位置,如果没有找到匹配字符串则返回 -1。

    • 去除字符串两侧的空白

      • trim()

        只能去除字符串前后的空白。
        没有参数
        返回值
        返回移除头尾空格的字符串。

    • 大小写转化

      • to(Locale)UpperCase()

        参数值无。所有小写字符全部被转换为大写字符

      • to(Locale)LowerCase()

        参数值无。所有小写字符全部被转换为小写字符

    • 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。

      • search(searchvalue)

        参数:searchvalue必须。查找的字符串或者正则表达式。
        返回值:与指定查找的字符串或者正则表达式相匹配的 String 对象起始位置。

    • 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

      • replace(searchvalue,newvalue)

        参数:searchvalue必需。规定子字符串或要替换的模式的 RegExp 对象。 请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。newvalue必需。一个字符串值。规定了替换文本或生成替换文本的函数。
        返回值:一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

    • 用于把一个字符串分割成字符串数组

      • split(separator,limit)

        参数:separator可选。字符串或正则表达式,从该参数指定的地方分割 string Object。
        limit可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
        返回值:一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 string Object 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

  • Date对象

    Date 对象和 Math 对象不一样,Date是一个构造函数,所以使用时需要实例化后才能使用其中具体方法和属性。Date 实例用来处理日期和时间

    • 使用Date实例化日期对象

      • 获取当前时间必须实例化

        var now = new Date();

      • 获取指定时间的日期对象

        var date1 = new Date(‘2020/1/16’);
        var date2 = new Date(‘2020-1-16 0:0:0’);

    • 通过Date实例获取总毫米数(时间戳)

      总毫秒数的含义
      基于1970年1月1日(世界标准时间)起的毫秒数

      • 获取总毫秒数的方法

        // 实例化Date对象
        var now = new Date();
        // 1. 用于获取对象的原始值
        console.log(date.valueOf())
        console.log(date.getTime())
        // 2. 简单写可以这么做
        var now = +new Date();
        // 3. HTML5中提供的方法,有兼容性问题
        var now = Date.now();

  • Number对象

    • Number 对象属性

      • MAX_VALUE可表示的最大的数。
      • MIN_VALUE可表示的最小的数。
      • NEGATIVE_INFINITY负无穷大,溢出时返回该值。
      • POSITIVE_INFINITY正无穷大,溢出时返回该值。
    • Number对象方法

      • toFixed(x)把数字转换为字符串,结果的小数点后有指定位数的数字。
      • toExponential()把对象的值转换为指数计数法。
      • isFinite()用来检测传入的参数是否是一个有穷数
  • Boolean对象

  • Math对象

    • Math对象的属性和方法

      • Math.PI圆周率

      • Math.max()/Math.min()求最大和最小值

      • Math.abs()绝对值

      • Math.floor()向下取整

      • Math.ceil()向上取整

      • Math.round()四舍五入版 就近取整 注意 -3.5 结果是 -3

      • Math.random()获取范围在[0,1)内的随机值

        • 求任意两个数之间的随机数Math.random() * (max - min + 1)+min

function

  • 定义函数的方法

    • 字面量法

      function functionName(参数){
      函数执行体
      }
      例:function sum(num1, num2) {
      var num3 = num1 + num2;
      return num3;
      }

    • 使用函数表达式声明函数(匿名函数)

      var num=function(){
      函数执行体
      }

    • 使用Function构造函数声明函数

      var num=new Function(‘参数一’,‘参数二’,‘return 参数一+参数二’);

    • 自执行函数

      (function(a){

      console.log(a);

      })(“abc”)

  • 函数的返回值

    return
    位于return语句后面的任何代码永远都不会执行。
    一个函数中可以有多个return语句。
    return语句也可以不带任何返回值。

  • 作用域

    通常来说一段程序代码中使用的变量和函数并不总是可用的,限定其可用性的范围即作用域,作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。

    • 全局变量和局部变量

      全局变量:
      1.在最外层声明的变量叫全局变量。
      2.在函数体内部,没有使用var关键字声明的变量也是全局变量。(不推荐)
      局部变量:
      在函数体内部,使用var关键字声明的变量叫作局部变量。
      注意点:
      局部变量退出作用域之后会销毁,全局变量关闭网页或浏览器才会销毁

    • 块级作用域

      任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。
      在es5之前没有块级作用域的的概念,只有函数作用域,现阶段可以认为JavaScript没有块级作用域

    • 词法作用域

      变量的作用域是在定义时决定而不是执行时决定,也就是说词法作用域取决于源码,通过静态分析就能确定,因此词法作用域也叫做静态作用域。
      在 js 中词法作用域规则:
      1.函数允许访问函数外的数据.
      2.整个代码结构中只有函数可以限定作用域.
      3.作用域规则首先使用提升规则分析
      4.如果当前作用规则中有名字了, 就不考虑外面的名字

    • 作用域链(会背)

      只有函数可以制造作用域结构, 只要是代码,就至少有一个作用域, 即全局作用域。凡是代码中有函数,那么这个函数就构成另一个作用域。如果函数中还有函数,那么在这个作用域中就又可以诞生一个作用域。将这样的所有的作用域列出来,可以有一个结构: 函数内指向函数外的链式结构。就称作作用域链。
      作用域链:采取就近原则的方式来查找变量最终的值。

  • 函数预解析

    • 预解析过程

      预解析过程:
      把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
      把函数的声明提升到当前作用域的最前面,函数声明代表函数整体,所以函数提升后,函数名代表整个函数
      先提升var,再提升function。
      预解析会把变量和函数的声明在代码执行之前执行完成。

    • 变量预解析

      预解析也叫做变量、函数提升。
      变量提升(变量预解析): 变量的声明会被提升到当前作用域的最上面,变量的赋值不会提升。

    • 函数预解析

      函数提升: 函数的声明会被提升到当前作用域的最上面,函数声明代表函数整体,所以函数提升后,函数名代表整个函数。

      • 函数表达式声明不会提前

函数也可以作为返回值

function fn(b) {
var a = 10;
return function () {
alert(a+b);
}
}
fn(15)();

函数也是一种数据类型 所以函数也可以作为参数

function sum©{
a=arguments[1];
b=arguments[2];
console.log(c(a,b));
}
function max(a,b){
if(a<b){
return b;
}else{
return a;
}
}
sum(max,3,5)
//这其实是用xmind写的然后导出来的可能会思路有点乱 如果有人想看原稿用xmind写的思维导图可以加我QQ1072346725 说明来意就可以私发给你 大三学生第一次创作可能不是很好 多多包涵


*XMind - Trial Version*

本文地址:https://blog.csdn.net/qiaohuishou/article/details/107309715

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网