函数、对象

数据类型

  基本数据类型:number、string、boolean、undefined、null

  引用数据类型:Array、Function、Object

类型转换

  转换为true:非空字符串、非0数字、任何对象

  转换为false:空字符、0、false、null、undefined

堆和栈

  栈区:存储基本数据类型和引用数据类型的地址

  堆区:存储引用数据类型的数据

1. 函数

  封装性、将执行代码封装在一个独立的执行环境中。可以反复调用,减少代码冗余

  函数体内提供的一个伪数组。argument中存放所有实参

  1. return

    作用:终止函数的执行,将结果返回给调用者,调用者可以用变量接收返回的结果。

function 函数名() {
     //函数体内没有return;    默认返回undefined
     //return 数据;       终止函数并返回数据
      //return;         终止函数返回undefined    
}        

  2. 作用域链

  当访问一个变量时,会先从本作用域中找,若找不到则向上一级作用域中找,以此类推就形成了一个作用域链。

  3. 预解析

  程序在执行之前的一个准备过程,这个过程就是预解析。预解析要做两件事情。

  • 把变量名提升到当前执行环境的顶部
  • 把函数体提升到当前执行环境的最顶部

2. 对象

  1. 创建方式

    ①通过new关键字调用系统提供的object构造函数;  

var 变量名 = new Object();  
 or var 变量名 = { };    //字面量写法推荐使用,推荐使用

    ②自定义构造函数; 

function stu (n, a, g){
    this.name = n;
    this.age = a;
    this.gender = g;
}
var stu1 = new stu('张三', 12, '男')

  2. 普通函数与构造偶函数区别

    命名规则区别:普通函数采用驼峰命名,构造函数采用帕斯卡命名法(首字母大写);

    调用方式:普通函数直接调用,构造函数需要通过new调用;

    目的不同:普通函数实现一些功能,构造函数专门来创建对象。

  3. 系统提供的构造函数与自定义狗杂函数区别

    系统提供的构造函数创建的对象叫内置对象

    自定义构造函数创建的对象叫做自定义对象

  4. new关键字作用

    调用构造函数创建对象

    执行过程

      ①在内存中创建一个空的对象

      ②让this指向这个空对象

      ③通过this给这个对象添加属性和方法

      ④将对象返回给调用构造函数的调用者

    object是JS中祖宗类,所有不同类型的对象,都直接或间接继承与它

    1. 对象的操作

      给对象设置属性和方法:   对象名.键名 = 值  or  对象名['键名'] = 值

      删除对象中属性和方法:   delete 对象.键名    or   delete 对象['键名']

      检测属性和方法:  对象.hasOwnProperty('键名')

      遍历对象的键值对:

for(var key in obj){
    console.log( obj[key] );     //遍值
    console.log( key );       //遍键名
}

      检测对象的类型(检测对象类型不要用typeof):对象 instanceof 构造函数

  5. 内置对象

    Math对象

      Math.abs(数字);获取一个数字的绝对值

      Math.round(数字);四舍五入

      Math.PI; π

      Math.ceil(数字);向上取整

      Math.floor(数字);向下取整

      Math.random(); 随机数 [ 0, 1 )

      Math.max(数字,数字.....);求最大数

      Math.min(数字,数字......);求最小数

    Date对象

      1. 创建Date类型对象

        var 变量 = new Date();    //创建当前时间对象

        var 变量 = new Date('2019-2-2 3:3:3');   or   var 变量 = new Date('2019/2/2 3:3:3');    //创建指定时间

        var 变量 = new Date( value );   //创建1970年开始value毫秒后的事件对象

        var data = new Date(2018, 6,6,12,12,12,12);    //

      2. 常用Data对象方法

        获取和设置年月日         

          日期对象.getFullYear()     /    日期对象.setFullYear()
          日期对象.getFullMonth()   /    日期对象.setFullMonth()
          日期对象.getDate()      /    日期对象.setDate()

        获取和设置时分秒       

          日期对象.getHours() / 日期对象.setHours()
          日期对象.getMinutes() / 日期对象.setMinutes()
          日期对象.getSeconds() / 日期对象.setHours()

        获取星期天数

          日期对象.getDay();   // 0-6(周日0到周六6)

        获取1970年至今的总毫秒数

          日期对象.getTime()  /  日期对象.setTime(数字);

    Array对象

      向数组前后中添加元素

        arr.unshift( ele1, ele2.....);     //向数组开头添加,并返回新的长度

        arr.push(ele, ele2......);   //向数组结尾添加

      从数组前后删除元素

        arr.shift();    // 删除并返回数组第一个元素

        arr.pop();    // 删除并返回数组最后一个元素

      数组任意位置添加,删除

        arr.splice(index,how,item1,item2...);   //index从哪个位置开始删除;how删几个

      数组元素的查询

        arr.indexOf();    //返回找到元素第一个索引,不存在返回  -1

      数组元素的拼接

        arr.join();把数组元素放入一个字符串 

var arr = [1,2,3]
arr.join('=')
//输出便是‘1=2=3’

      数组的反转和排序

        arr.reverse();   //颠倒数组元素顺序

        arr.sort();     //默认排序是根据字符串Unicode吗  

arr.sort(function(a, b){      //升序
    return a-b
})
arr.sort(function(a, b){      //降序
    return b-a
}) 

    扩展方法

//数组遍历
arr.forEach(function(value, index){
   console.log(value) 
})
//过滤符合条件的元素,返回一个新数组
 arr.filter(function(value,index){
   return value > 50     
})
//验证数组每一个元素是否符合指定条件,返回布尔
arr.every(function(value, index){
   return 条件     
})
//验证数组中元素是否有符合指定条件的返回布尔
arr.some(function(value, index){
    return 条件
})
//遍历数组中每一个元素,更改后存入一个新数组,并返回新数组
arr.map(function(value, index){
   return value*2 
})

   string对象

      字符串不可变性:var str = ‘abc’;str = ‘hellow’;从新给var赋值数据‘abc’不会被修改依然在内存中,重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变性

      字符串所有的方法,都不会修改字符串本身,操作完成后会返回一个新的字符串

      获取字符串的单个字符

        str.charAt(index)    or    str[ index ]

      字符串的拼接和截取

        str.concat(art1,art2...)  or   str1  +  str2

        str.slice(star, end)     //截取

      去除空白符

        str.trim();   //去除两边空白符

      字符大小写转换

        str.toUpperCase();    //转换大写

        str.toLowerCase();   //转换小写

      字符串替换

        str.replace(old, new)

      字符串分隔

        str.split();   //把一个字符串分隔成数组

    

原文地址:https://www.cnblogs.com/xhrr/p/11169272.html