目录
(1)JSON.stringify() 方法是将JS值(对象或者数组)转换JSON字符串
(2)JSON.parse() 方法是将JSON字符串转换为对象
(3)hasOwnProperty() 判断对象的属性是否存在
(5)defineProperties() 直接在一个对象上定义新的属性或修改现有属性,并返回该对象
(6)keys() 返回一个由一个给定对象的自身可枚举属性组成的数组
(7)values(); 返回一个给定对象自己的所有可枚举属性值的数组
(8)entries(); 返回一个给定对象自身可枚举属性的键值对数组
9、数值(转换为数值)
parseInt() 方法 //字符串转换整数
parseFloat() 方法 //字符串转换小数
Number() 方法 //任何转换数值
toFixed() //返回字符串值,从小数后开始数
toPrecision() //返回字符串值,从整个数字开始数
//去掉双引号,为30
(1)parseInt 字符串转换整数
//30
(2)parseFloat字符串转换小数
(3)Number任何转换数值
(4)toFixed、toPrecision
toFixed() //返回字符串值,从小数后开始数
toPrecision() //返回字符串值,从整个数字开始数
10、数组
- toString() 数组转换字符串
- join() 拼接元素
- unshift() 头部添加
- push() 尾部添加
- pop() 删除尾部
- shift() 删除头部,并把所有其他元素“位移”到更低的索引
- splice() 删除或替换指定元素
- slice() 获取指定元素,不会改变原数组
- concat() 拼接数组
- sort () 顺序
- reverse() 逆序
- for 遍历
- forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
- map
- for in
- filter() 返回满足条件的元素
- every() 全部满足返回turn
- some() 只要有一个满足就返回turn
- reduce 累加,数组全部相加
1)
(1)toString数组转换字符串
(2)join拼接
2)添加:
(3)unshift头部添加
(4)push尾部添加
3)删除:
(5)pop删除尾部
(6)shift删除头部
(7)splice删除指定位置
-------------------------------------------------------------------------------
//替换
//6和7换成3
4)
(8)slice获取指定数值
(9)concat合并数组
5)排列
(10)sort顺序
(11)reverse逆序
6)遍历
(12)for
(13)forEach
(14)map
区别:map的区别在于,只是forEach没有返回值
(15)for in
集合{}:
数组[]: //获取的是下标
7)筛选
(16)filter返回满足条件的元素
var arr15 = [2,3,5,6,7,18,9];
var a15 = arr15.filter(function(item,index){
return item >5;
});
//[6,7,18,9]
//返回满足条件的元素
(17)every全部满足才返回turn
(18)some只要有一个满足就返回turn
(19)reduce累加
11、对象
1)定义对象两种方式
(1)new方式
var person = new Object();
(2)字面量方式
1、简单字面量方式
var person2 = {};
2、(常用) 嵌套字面量方式
2)属性
(1)写法
3)序列化
- JSON.stringify() 方法是将JS值(对象或者数组)转换JSON字符串
- JSON.parse() 方法是将JSON字符串转换为对象
- hasOwnProperty() 该方法可以判断对象的自有属性是否存在
- assign() 该方法主要用于对象的合并
- defineProperties() 直接在一个对象上定义新的属性或修改现有属性,并返回该对象。
- keys() 返回一个由一个 给定对象的自身可枚举属性组成的数组
- values(); 返回一个给定对象自己的所有可枚举属性值的数组
- entries(); 返回一个给定对象自身可枚举属性的键值对数组
(1)JSON.stringify() 方法是将JS值(对象或者数组)转换JSON字符串
(2)JSON.parse() 方法是将JSON字符串转换为对象
var obj3 = {name:'abc',age:18,id:1};
console.log(typeof JSON.stringify(obj3)) //string
console.log(typeof obj3); //object
var str = JSON.stringify(obj3);
console.log(typeof JSON.parse(str)); //object
(3)hasOwnProperty() 判断对象的属性是否存在
方式一:
检测属性是否是自有属性
方式二:
检测属性是否存在于某个对象中,自有属性和继承属性都返回true
//true
区别:
(4)assign() 对象的合并
===========================================================
===========================================================
(5)defineProperties() 直接在一个对象上定义新的属性或修改现有属性,并返回该对象
defineProperty() 定义单个
defineProperties() 定义多个
===========================================================
writable:false
===========================================================
===========================================================
(6)keys() 返回一个由一个给定对象的自身可枚举属性组成的数组
//返回的是属性(数组类型)
(7)values(); 返回一个给定对象自己的所有可枚举属性值的数组
//返回的是值(数组类型)
(8)entries(); 返回一个给定对象自身可枚举属性的键值对数组
(9)delete删除
//为18
12、函数
(1)函数声明与函数表达式
(2)自调用函数(自动调用)
(3)arguments
(4)写法
写法一:
var _name = document.getElementById('name')
var _phone = document.getElementById('phone')
//成为焦点
_name.onfocus = function () {
//nextSibling返回某个元素之后紧邻的节点
this.nextSibling.style.display = "none";//紧邻的同级样式隐藏
};
_phone.onfocus = function () {
this.nextSibling.style.display = "none";//紧邻的同级样式隐藏
};
//失去焦点
_name.onblur = function () {
//判断 如果表单的值为空 错误提示显示,反之表单的值不为空,错误提示隐藏
if(this.value==''){
this.nextSibling.style.display="inline"; //紧邻的同级样式显示
}else {
this.nextSibling.style.display="none"; //紧邻的同级样式隐藏
}
};
_phone.onblur = function () {
//判断 如果表单的值为空 错误提示显示,反之表单的值不为空,错误提示隐藏
if(this.value==''){
this.nextSibling.style.display="inline";//紧邻的同级样式显示
}else {
this.nextSibling.style.display="none"; //紧邻的同级样式隐藏
}
};
//onfocus(成为焦点)
onblur(失去焦点)换成chlick也可以
写法二(推荐)
//$是与querySelector无关
//一样
//面向对象的写法
写法三(推荐)
//一样
13、预解析
预处理:创建一个词法环境,扫描JS中的用声明的方式声明的函数,用var定义的变量并将它们加到预处理阶段的词法环境中去
预解析:在全局中寻找var关键字声明的变量和通过function关键字声明的函数,主要把var , function , 参数等一些东西 存储进仓库里面(内存)。
//先全部声明,再打印
========================================================
========================================================
//函数的优先级更高
========================================================
//结果为99
// ? 第一行写c会报错c去掉了
//a、b、d、e都是undefined,c是报错
14、作用域
作用域:
在ES5中只有全局作用域和函数作用域,没有块级作用域。
在ES6中添加了let\const,他可以保证外层块不受内层块的影响。即内层块形成了一个块级作用域,这是let\const的一个特点;今天我们着重讲的是函数作用域与全局作用域。
(1)在全局变量和局部变量不同名时,其作用域是整个程序
(2)在全局变量和局部变量同名时,全局变量的作用域不包含同名局部变量的作用域
同名时:内外都是var a=1,则各做各的
注意1
同名时:内外都是var a=1,则各做各的
//结果为undefined原因:变量同名
注意2
//结果为undefined原因:变量同名,但是变量范围大小不同
15、深浅拷贝
========================================================
========================================================