数据类型,构造函数,原型和原型链的一些讲解补充

一、数据类型

1.5个基本类型

string
number
boolean
undefined 未定义
null 值为空
symbol 表示一个符号,符号类型是唯一的并且是不可修改的

最常见的还是前三种,字符串,数字,布尔值

2.常见的引用类型

引用类型是一种数据结构,用于将数据和功能组织在一起

对象-Object, 数组-Array, 函数-Function, 正则-RegExp, 日期-Date等

二、函数

1.什么是函数?

  1. 具有独立功能的代码块,在js中使用function关键字定义函数
  2. 让代码结构更加清晰,提高代码可用性
  3. js函数的分类:自定义函数和系统函数

2.自定义函数

有一种匿名函数,没有名字的函数,创建闭包,避免造成全局变量的污染

匿名自执行函数

  1. 概念:匿名函数的定义完成后立即执行,执行函数表达式
  2. 作用:实现闭包和创建独立的命名空间
  3. 使用:分组操作符(),void操作符,~操作符,!操作符等等
  4. 使用场景:函数表达式,对象属性,事件,事件参数,返回值
  5. 定义完匿名函数后,一定要调用
// 函数表达式
window.onload = function() {
    let funcobj = function() {
        alert("函数表达式中的匿名函数")
    }
    funcobj();
}
// 对象属性
window.onload = function() {
    let obj = {
        name: function() {
            alert('对象属性中的匿名函数')
        }
    }
    obj.name();
}

3.内置函数

放在全局下面叫做函数,放在对象里面被叫做方法,对象的方法

  1. 常规函数
alert() // 弹出框
confirm()   // 弹出一个确认框
prompt()    // 弹出一个输入框
isNaN()     // 判断是否为数字
parseInt()  // 将字符串或浮点数转换为整数
parseFloat()    // 将字符串转换为整数或浮点数
eval()      // 计算表达式的结果
  1. 数组函数

for循环遍历数组

var arr = [1,2,3,4];
for(var i = 0; i<arr.length; i++) {
    console.log(arr[i])
}

// 输出 1,2,3,4

通过for in遍历数组

var arr = [1,2,3,4];
for (var i in arr) {
    console.log(arr[i]);
}

// 输出 1,2,3,4
// 增加
unshift()   // 添加元素在数组首部,返回值是数组长度
push()      // 添加元素在数组尾部,返回值是数组长度
conat()     // 连接两个数组,返回值是连接后的数组
    var arr1 = [1];
    var arr2 = [2];
    let arr = arr1.concat(arr2);
    console.log(arr); // [1,2]

/*****************************************/
// 删除
pop()       // 删除数组最后一个元素,返回值是删除的元素
shift()     // 删除数组第一个元素,返回值是删除的元素
splice(a,b) // 删除指定位置a后的b个元素,返回值是删除的元素
slice(a,b)  // 删除从a位置到b位置之间的元素

/*****************************************/
// 查找
indexOf()   // 判断数组是否包含指定元素,存在返回元素,不存在返回-1
includes()  // 判断数组是否包含指定元素,存在返回true,不存在返回false

/*****************************************/
// 其他
sort()      // 将数组按照规则排序
    var arr1 = [4,5,6];
    var arr2 = [1,2,3];

    var arrAscSort = arr5.sort((a, b) => a-b); // 升序排序
    console.log(arrAscSort); // [ 1, 1, 2, 3, 5, 6 ]
    
    var arrDescSort = arr5.sort((a, b) => b-a); // 降序排序
    console.log(arrDescSort); // [ 6, 5, 3, 2, 1, 1 ]

reerse()    // 数组反转
    var arr = [1,2,3,4,5,6];
    // 直接通过reverse()方法调用
    console.log(arr.reverse())  // [6,5,4,3,2,1]

Array.from()    // 将一串数据转换为数组形式
    var str = '将一串数据转换为数组形式'
    console.log(Array.from(str))
    // ["将", "一", "串", "数", "据", "转", "换", "为", "数", "组", "形", "式"]

Array.isArray() // 判断一个变量是否为数组
    var str = '将一串数据转换为数组形式'
    console.log(Array.isArray(str))
    // false
  1. 日期函数 Date()

获取时间

var time = new Date()
// 获取当前时间
// Fri Nov 13 2020 20:21:35 GMT+0800 (中国标准时间)

getFullYear()   // 获取当前年份
getMonth()      // 获取当月月份  -1
getDate()       // 获取当天日期
getHours()      // 获取当前小时
getMinutes()    // 获取当前分钟
getSeconds()    // 获取当前秒
getMilliseconds()   // 获取当前毫秒
getTime()       // 时间戳-获取1970年至今的毫秒数

设置时间

setYear()       // 设置年份
setMonth()      // 设置月份
setDate()       // 设置日期
setHours()      // 设置小时
setMinutes()    // 设置分钟
setSeconds()    // 设置秒
  1. 数学函数 Math

主要常用的数学函数方法

Math.abs()  // 绝对值
Math.ceil() // 向上取整
Math.floor()// 向下取整
Math.round()// 四舍五入
Math.random()   // 生成0-1之间的随机数

random()的延伸用法---生成指定位的随机数

function getRandomNumber(min, max){
    return Math.floor(Math.random()*(max - min)) + min;
}
console.log(getRandomNumber(1000, 9999));
  1. 字符串函数
indexOf()   // 查找字符串,返回索引值
    var arr = ["字", "符", "串", "函", "数"]
    console.log(arr.indexOf("串"))  // 2

split()     // 将字符串按照指定的分隔符分割开来
    var str = "字符串函数"
    console.log(str.split(''))      // ["字", "符", "串", "函", "数"]

trim()      // 清除字符串两端的空格
    var str = "   字符串函数   "
    console.log(str)        // [   字符串函数   ]
    console.log(str.trim()) // [字符串函数]

match()     // 按照制定规则查找值
    var str = "字符串函数字符串函数"
    console.log(str.match(/字符串/))    // 字符串
    document.write(str.match(/字符串/)) // 字符串

search()    // 返回字符串

首次出现的位置
    var str = "字符串函数字符串函数"
    console.log(str.search('串'))   // 2

replace()   // 替换指定的字符串
    var str = "字符串函数字符串函数"
    console.log(str.replace('字','函'))
    // 函符串函数字符串函数

substring(a,b) // 从指定位置切割字符串,左闭右开
    // 从索引a,截取到b
    var str = "字符串函数字符串函数"
    console.log(str.substring(0,3)) // 字符串

substr(a,b)    // 从指定位置切指定个字符
    // 从索引a开始,截取b个字符
    var str = "字符串函数字符串函数"
    console.log(str.substr(0,3))    // 字符串