数组常用
- pop 删除数组最后一项
- push 添加到数组最后一项
- shift 删除数组的第一项
- unshift 添加到数组的第一项
- splice 可以添加或者删除数组指定位置的内容
- reverse 可以反转数组
- sort 可以排序数组
var arr = [1,2,4,3];
arr.sort(function(a,b){
return a-b;
})
- concat:把2个或者多个数组连接成一个数组
- join : 可以数组通过指定的字符连接成字符串
- indexOf :查找元素再数组中的索引 , 如果没有找到 那么就会返还-1
### 冒泡排序
- 如果前一项大于后一项的值,那么就把前一项和后一项 互换位置 ,重复这个过程来进行排序
### 选择排序
- 找到最小值索引,记录最小值的索引 ,把最小值索引的值和假设的最小值 进行互换操作 ,重复这样的过程,然后排序;
### 传值 和 传址
- 简单数据类型会传值
- 以值的形式存在栈里
- 复杂数据类型会传址
- 以址存在栈里
- 值实际上在堆里
- 传址会造成互相引用 (互相影响);
- 如何解决传址问题(互相影响问题)
- 深拷贝
- 字符串的方法 replace : 替换指定字符;
- 数组塌陷
- 在循环的时候改变了原本数组的长度
- 就是把 i--
var arr = ["a","b","c","d"];
arr.splice(1,arr.length-1);
console.log(arr);
for(var i=0;i<arr.length;i++){
arr.splice(i,1);
// console.log(arr);
i--
}
console.log(arr);
- 深拷贝
- JSON.stringify() : 把对象转换成json字符串
- JSON.parse(): 把json字符串转成对象
- JSON.parse(JSON.stringify(对象)) :得到一个新的对象
- 缺点 会忽略一些属性 ,undefined function ...
- 递归深拷贝
var obj1 = {
name: "张三",
age: 20,
a:undefined,
fn:function(){
console.log("fn");
},
hobby:{
one:"篮球",
fn1:function(){
console.log(111);
}
}
}
// 可以通过JSON.stringify 和 JSON.parse 来做深拷贝
// 1.JSON.stringify 可以把对象转成一个json字符串
// 2.JSON.parse 可以把js字符串转成对象
// console.log("旧对象",obj1);
// var res = JSON.stringify(obj1); // obj1 对象转成字符串
// console.log(res);
// var newObj = JSON.parse(res); // 把字符串转成对象
// console.log("新的对象",newObj);
//JSON: 会忽略某些属性 ,比如 undefined function
var obj = JSON.parse(JSON.stringify(obj1));
// var obj = obj1;
// obj.name = "李四";
console.log("obj的值是json转的:",obj)
console.log("obj1的值是之前的",obj1);
- this对象
- js内置的一个对象
- 全局this对象 就是window
- 函数内的this对象
- 不要关注this的定义,需要关注this的调用
- 函数直接调用
```js
function fn(){ console.log(this) }; fn() ;// this指向window
```
- 通过事件来调用
```js
btn.onclick = function(){
console.log(this) // this会执行事件源
}
```
- 对象里的函数调用
- 直接通过对象来调用
```js
var obj = {
name:"张三",
fn:function(){
console.log(this);
}
}
obj.fn(); // this就指向调用的对象
```
- 通过变量保存函数来调用
```js
var obj = {
name:"张三",
fn:function(){
console.log(this);
}
}
var myfn = obj.fn;
myfn(); // this就指向window
```
- 严格模式
- 如何开启 `use strict`
- 开启严格模式之后 js 语法变得更加严谨
- 字符串编码
- 字符串比较
- 字符串创建
- 字面量
- 内置构造函数
- 包装对象
- 字符串的常用方法
- charAt
- charCodeAt
- indexOf
- substring :截取字符串 (包前不包后)
- substr: 截取字符串 (参数一:开始截取的字符索引位置 ,参数二:是要截取的个数)
- toLowerCase : 字母转小写
- toUpcase() : 字母转大写
- split : 根据对象的字符把字符串切割成数组
- replace:替换指定的字符
- ES5其他常用循环
- 数组.方法(function(item,key,arr){ item: 键值 key:键名 arr:原数组 })
- forEach
- map 需要return ; 重新复制一个数组
- filter :把返还函数里符合条件的内容过滤出来
- some : 返还函数的结果只要有一个满足条件那么结果就会是true ,否则就是false
- every: 返还函数的结果 都为true every的结果就是true ,否则就是false
- 时间对象 :js提供一个内置操作时间的对象
- 如何获取当前时间对象
- new Date(): 注意 本电脑的时间
- 获取指定的时间对象
- 传入对应的年月日的参数 ; 注意:月是0-11月来算的;
```js
new Date("2020","3","1") //
```
- 传入一个字符串; 注意 月是 1-12月
```js
new Date("2020-1-1 11:1:1");
```
- 操作时间对象: 时间对象.方法();
- 获取年 getFullYear();
- 获取月 getMonth(); // 注意: 获取的0-11 个月份
- 获取日 getDate();
- 获取星期 getDay();
- 获取时 getHours();
- 获取份 getMinutes();
- 获取秒 getSeconds();
作者:你好_2bcf
链接:https://www.jianshu.com/p/e25ac20aac13
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。