数据类型,构造函数,原型和原型链的一些讲解补充
一、数据类型
1.5 个基本类型
string number boolean undefined 未定义 null 值为空 symbol 表示一个符号,符号类型是唯一的并且是不可修改的
最常见的还是前三种,字符串,数字,布尔值
2.常见的引用类型
引用类型是一种数据结构,用于将数据和功能组织在一起
对象-Object, 数组-Array, 函数-Function, 正则-RegExp, 日期-Date 等
二、函数
1.什么是函数?
- 具有独立功能的代码块,在 js 中使用 function 关键字定义函数
- 让代码结构更加清晰,提高代码可用性
- js 函数的分类:自定义函数和系统函数
2.自定义函数
有一种匿名函数,没有名字的函数,创建闭包,避免造成全局变量的污染
匿名自执行函数
- 概念:匿名函数的定义完成后立即执行,执行函数表达式
- 作用:实现闭包和创建独立的命名空间
- 使用:分组操作符 (),void 操作符,~操作符,! 操作符等等
- 使用场景:函数表达式,对象属性,事件,事件参数,返回值
- 定义完匿名函数后,一定要调用
// 函数表达式
window.onload = function() {
let funcobj = function() {
alert("函数表达式中的匿名函数")
}
funcobj();
}
// 对象属性
window.onload = function() {
let obj = {
name: function() {
alert('对象属性中的匿名函数')
}
}
obj.name();
}
3.内置函数
放在全局下面叫做函数,放在对象里面被叫做方法,对象的方法
- 常规函数
alert() // 弹出框
confirm() // 弹出一个确认框
prompt() // 弹出一个输入框
isNaN() // 判断是否为数字
parseInt() // 将字符串或浮点数转换为整数
parseFloat() // 将字符串转换为整数或浮点数
eval() // 计算表达式的结果
- 数组函数
用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
- 日期函数 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() // 设置秒
- 数学函数 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));
- 字符串函数
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)) // 字符串