1.判断对象为空的方法

1)Object.keys({}).length === 0 // true

2)Object.getOwnPropertyNames({}).length === 0 // true

3)JSON.stringify({}) === '{}' // true

2.判断是否为数组

1)Array.isArray([]) // true

2)Object.prototype.toString.call([]) === '[object Array]'; // true

3)[].constructor.toString().indexOf('Array') !== -1; //true

3.js变量

1)使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象;
使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升;
使用const声明的是常量,在后面出现的代码中不能再修改该常量的值。

2)js变量提升:变量可以在使用后声明,也就是变量可以先使用再声明

4.创建对象的四种方式

1)对象字面量方式创建方式
  var obj = {name: 'tom', age:23}

2)工厂方式创建对象
  function createObj(){
    var obj = new Object();
    obj.name = 'tom';  
  }

3)构造函数方式创建对象
  function createObj(){
    this.name = 'tom';
  }
  var obj = new createObj();

4)用原型链方式
  function CreateObj(){}
  CreateObj.prototype.name = 'tom';
  var obj = new CreateObj();

5.object的操作

1)Object.keys  获取对象的所有keys值 为数组形式

2)Object.values 获取对象的所有values 为数组形式

3){}.hasOwnproperty('key') 判断对象是否有key属性

4)for(x in obj) 循环对象

6.number

1)toString  转成字符串 括号里可加基数

2)toFixed 转成字符串,括号指定保留小数点后位数

3)toLocaleString 格式化数字,每三个加逗号

4)toExponential 转成指数表示

7.Math

1)Math.round(0.6)  // 1  四舍五入

2)Math.ceil(0.4) // 1 向上取整

3)Math.floor(0.9) // 0 向下取整

4)Math.max(1,2,3,4) // 4

5)Math.min(1,2,3,4) //1

6)Math.random() * (max - min + 1) + min //随机数

8.Date

1) date.getFullYear()

2) date.getMonth()

3) date.getDate()

4) date.getDay() //获取星期几

5) date.getHours()

6) date.getMinutes() //分钟

7) date.getSeconds() //秒

8) date.getMillseconds() //毫秒

9) date.getTime() //1970.1.1 至今的毫秒数

9.array

1) concat() //连接多个数组,并返回结果

2) join() //把数组分割成字符串 如[1,2].join(',') => "1,2"

3) pop() // 删除并返回数组的最后一个元素

4) pusp() //向数组的末尾添加一个或更多元素,并返回新的长度

5) unshift() //向数组的开头添加一个或更多元素,并返回新的长度

6) shift() // 删除并返回数组的第一个元素

7) sort() // 对数组进行排序

8) reverse() // 颠倒数组

9) toString() // 把数组转为字符串

10) slice(start, [end]) // 返回数组指定元素

11) splice(index, count, [add]) // 从数组中删除指定元素,并返回被删除内容(数组格式) 
  index: 位置; count:删除数量;add:添加元素 可选
  [1,2,3].splice(-1,1) => [1,2]
  [1,2,3].splice(1,2,4) =>[1,4]

10.string

1) slice(start, [end]) // 截取字符串

2) substring(start, [stop]) // 截取字符串, 与slice相似,但不允许负的参数;如果参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。如果 start 比 stop 大,那么该方法在提取子串之前会先交换这两个参数。

3) substr(start, length) // 截取字符串

4) charAt() // 返回在指定位置的字符

5) concat() //拼接字符串

6) indexOf() // 检索字符串

7) lastIndexOf() // 从后向前检索

8) match() // 找到与正则的匹配 ('match1match2').match(/\d+/g) => [1,2];

9) replace() // 替换与正则相匹配的值 ('match1match2').replace(/\d/g, '||') => ('match||match||')

10) search() // 检索与正则匹配的值 ('match1match2').search(/\d/g) => 5

11) toUpperCase() // 把字符串转为大写

12) toLowerCase() // 把字符串转为小写

13) split('&') 字符串按‘&’进行分割

11. js全局函数

1)encodeURL() 把字符串编码为url

2)decodeURL() 解码某个URL

3)escape() 对字符串进行编码

4)unescape() 进行解码

5)parseFloat() 解析一个字符串并返回一个浮点数

6)parseInt() 解析一个字符串并返回一个整数

第二个参数可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN

parseInt(, ) //
parseInt(, ) // NaN
parseInt(, ) // NaN

7)Number() 把对象的值转为数字

8)String() 把对象的值转为字符串

12. js正则

1)/正则主体/修饰符 ==> /^\d+$/g 或 var r = new RegExp('\\d', 'g')
  /^1[34578]\d{9}$/g 和 /\d+.\d+/g

2)  修饰符 
  i:忽略大小写;
  g:执行全局匹配;
  m:执行多行匹配

3)方括号
  [abc]:查找方括号之间的任何字符
  [^abc]:查找任何不在方括号之间的字符
  [0-9]:查找任何0-9的数字
  [a-zA-Z]:查找任何从小写a到大写Z的字符

4)  元字符
  \w  查找单词字符
  \d  查找数字
  \D  查找非数字字符
  \s  查找空白字符
  \b  查找单词边界

5)  量词
  n+ 匹配任何包含至少一个n的字符串
  n* 匹配任何包含零个或多个n的字符
  n? 匹配任何包含零个或一个n的字符
  n{x} 匹配包含x个n的字符
  n{x,} n连续出现至少x次时匹配
  n{x,y} n连续出现至少x次,至多y次时匹配
  n$ 匹配任何结尾为n的字符
  ^n 匹配任何开头为n的字符

13.http请求

1.get请求
  1) var xhr = new XMLRequest()
  2) xhr.onreadystatechange = function(){
    if(xhr.readyState === 4 && xhr.status === 200 || xhr.status === 304) // 成功的回调函数
  }
  3) xhr.onerror = function(){}
  4) xhr.open('GET', url, true) //true: 是否为异步请求
  5) xhr.send()

2. post请求
  1) var xhr = new XMLRequest()
  2) xhr.onreadystatechange = function(){
    if(xhr.readyState ===4 && xhr.status === 200 || xhr.status === 304){} 
  }
  3) xhr.open('POST', url, true)
  4) xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
  5) xhr.send('name=tom&age=12')

14.杂

1.getXX和queryXX的区别:
1).getXXXByXXX 获取的是动态集合,querySelector获取的是静态集合
2).getXXX可以接受错误的参数,queryXX则严格符合 CSS 选择符规范的
3).getXX性能要快
使用场合:
正常情况下使用getXX,如果得到的元素需要很麻烦的多次getElementBy..组合才能得到的话使用querySelector,方便

2.将argument转成数组

var args = Array.prototype.slice.call(arguments);

3.数字格式化

var n = 123456789;

n.toLocaleString() ==> "123,456,789"

4.数组去重

[...new Set([1, "1", 2, 1, 1, 3])] ==》[1, '1', 2, 3]

5.数组填充

arr.fill(value[, start[, end]])

Array(6).fill(8) ==》[8,8,8,8,8,8]

6.一行代码一个插件

"★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate);

7.+一元运算可以是字符串转为number

+ new Date ==》1525186216452

+‘1.1’ ==》 1.1

8.js 对input进行输入监听

var input = document.getElementById('input');
input.oninput = function (ev) {}

9.短路运算var a = b && 1

// 相当于
if (b) {a = 1
} else {
a = b
}var a = b || 1

// 相当于
if (b) {a = b
} else {a = 1
}

10.css方面

关于 css子元素浮动后父元素高度不能自动撑开 问题
1.给父元素添加样式:overflow: hidden;
2.在父元素最后添加一个空元素,空元素加上样式:clear: both;
3.将父元素一起浮动;

11.总结:XML和HTML的区别?

1)XML标签可以任意指定,但HTML标签是固定的;
  2)XML语法非常严格,HTML语法非常松散;
  3)XML用于描述和存储数据——类似于数据库;HTML用于展现网页的结构,只用于浏览器;

12.dom操作

  1. 在父元素末尾追加: 
             parent.appendChild(child)
         2. 插入到父元素下的现有子元素之前:
             parent.insertBefore(child, oldChild)
         3. 替换父元素下现有子元素
             parent.replaceChild(child, oldChild)

13.拷贝对象

var b=JSON.parse(JSON.stringify(a))

14.交换两个值

a = [b,b=a][0];

15.使页面的每个元素加上边框

[].forEach.call($$("*"),function(a){
a.style.outline="1px solid #"+(~~(Math.random()*(1<<24))).toString(16)
})

16.禁止频繁操作
var click = (function(){
  var isClick = true;
  return function(params, time){
    if(isClick){
      //todo
      isClick = false;
      console.log(params);
      setTimeout(function(){
        isClick = true;
      }, time)
    }
  }
})();
click('click count', 3000)

17.数字格式化(添加千分位)
1234567.1.toLocaleString()//1,234,567.1
更多请查看https://juejin.im/post/5ac472016fb9a028c22afa9d

18.将多维数组转为以为数组
arr.join(',').split(',')
[[1,2,3],4,5,[[6,7]]].join(',').split(',')//["1", "2", "3", "4", "5", "6", "7"]
19.获取数组倒数的元素
arr.slice(-1) 获取倒数一个元素
arr.slice(-2) 获取倒数两个元素

20.数组重洗
arr.sort(()=> (Math.random() - 0.5))

js混杂笔记的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  3. js读书笔记

    js读书笔记 基本类型的基本函数总结 1. Boolean() 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 "&q ...

  4. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  5. JS 学习笔记--9---变量-作用域-内存相关

    JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...

  6. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  7. JS面向对象笔记二

    菜单导航,<JS面向对象笔记一>,  参考书籍:阮一峰之<JavaScript标准参考教程> 一.构造函数和new命令 二.this关键字 三.构造函数和new命令 四.构造函 ...

  8. WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)

    WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...

  9. WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法

    WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...

随机推荐

  1. Chart.js 动态图表的使用

    一.相关资料 1. 简介 Chart.js 是一个基于 HTML5 的简单的面向对象的图表库,支持包括 IE7/8 和所有现代浏览器.支持六种图标:曲线图(Linecharts).柱状图(Barcha ...

  2. Java7、Java8 安装卸载问题

    win7 系统,同时安装了JDK7和JDK8,卸载了JDK8之后,cmd命令行输入:java -version ,本以为显示java版本1.7,结果弹错:has value '1.7',but '1. ...

  3. Java for LeetCode 137 Single Number II

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  4. Android 修改Menu字体颜色和背景

    我们知道,在Android中修改TextView的字体颜色,一般是通过setTextColor()方法.虽说Android的Menu菜单项的每一项都是由TextView组成,但是Android的sdk ...

  5. IIS反向代理实现Revel域名访问

    Revel实现域名访问 1.在cmd中启动revel项目,我设置的端口为8000 2.下载IIS的Application Request Routing Cache组件下载地址 3.安装ARR 4.打 ...

  6. JS继承的实现方式

    JS作为面向对象的弱类型语言,继承也是其非常强大的特性之一.那么如何在JS中实现继承呢?让我们拭目以待. JS继承的实现方式 既然要实现继承,那么首先我们得有一个父类,代码如下: // 定义一个动物类 ...

  7. python返回列表中指定内容的索引

    import numpy as npa=[2,10,2,3,4,10,10]ans = np.where(np.array(a)==10)print(ans) 结果是:(array([1, 5, 6] ...

  8. JavaScript--Object类

    Object类是所有JavaScript类的基类,提供了一种创建自定义对象的简单方式,不需要程序员再定义构造函数. 主要属性: constructor-对象的构造函数 prototype-获得类的pr ...

  9. 有时候,Visual C++代码中加中文注释会导致错误!

    今天做题发现了个奇葩错误,以此警戒自己. 张某,做的一道题. --------------------------------------------------------------------- ...

  10. Unix环境编程之文件IO

    1.文件IO 2.文件与目录 3.进程 4.多线程编程 5.信号 6.进程间通信 学习linux编程,首先要学会使用shell,这里一些基础命令就不介绍了.这里唯一要提的一个shell命令就是man. ...