- 博客(23)
- 收藏
- 关注
原创 带你了解JavaScript的运行机制——Event Loop
1.js是单线程的。首先,众所周知,js是单线程的,为什么这种低效的运行方式依旧没有被淘汰那?这是由它的用途决定的;js主要用途是用户交互和DOM操作,举例来说假如js同时有两线程,一个线程在某个DOM节点上添加内容,另一个线程却删除了这个节点,这时候浏览器就不知所措了,该以哪个线程为标准那?(为了提高运行性能,新的html5里添加了web worker,其能在主线程内添加子线程,但是限制了其无...
2018-11-26 10:09:37
270
原创 获取dom元素的样式 style defaultView.getComputedStyle
当你想要获取某一dom元素的css样式时,直接想到的就是获取其style属性document.getElementById('div').style但是实际上并不如你所愿,style属性里的各个值大部分都是空的。因为往往样式都是通过css生成的。Jquery里有.css('color')的方法,它其实就是通过原生的 getComputedStyle 来实现的。以下是实现方式:...
2018-05-01 12:52:02
542
原创 数字转千分位 js 保留小数位
保留原有形式,有小数点的保留小数位,整型的依然返回整型(String)formatData(num) { num = num + ''; if (!num.includes('.')) { num += '.' } return num.replace(/(\d)(?=(\d{3})+\.)/g, function($0, $1) { retu
2018-04-30 11:58:14
4306
原创 阿拉伯数字转中文 精确到 万
function numToChinese(num){ num += "";//转为字符串; let chinese=""; const bigNum = "零一二三四五六七八九"; const Unit = ["","十","百","千","万"]; num = num.split("").reverse(); num.forEach((val, index) => { chin
2018-01-23 17:43:49
271
原创 原生js 对象属性监听,对象重写,defineProperty getter setter
const param = { name: "bottle", age: 23}for(let item in param){ let val = param[item]; if(param.hasOwnProperty(item)){//判断是否为自有属性 Object.defineProperty(param, item, {//属性重写(或者添加属性) get(){
2018-01-23 09:52:10
1195
原创 函数节流(throttle)与函数去抖(debounce)
debounce:把触发非常频繁的事件合并成一次执行 throttle:设置一个阀值,在阀值内,把触发的事件合并成一次执行;当到达阀值,必定执行一次事件
2017-09-25 19:12:06
313
原创 JQuery.extend深度讲解,浅谈Object.create
1. $.extend 简单来说就是 实现单个对象的复制或者多个对象的合并对象的复制就对象复制的问题,初学者一般会直接: var newObj = originObj; 这肯定是不对的,你会发现当你改变newObj的时候,originObj也随之改变了。因为newObj只是一个指向originObj的地址。 然后比较复杂的方法就是遍历originObj一个个对newObj赋值,垃圾方法!
2017-05-05 16:29:42
599
原创 Promise重写confirm,alert弹出框 .then()
之前用回调函数写过 confirm,alert弹出框:http://blog.youkuaiyun.com/qq_33619285/article/details/56052011 刚刚了解了promise,所以尝试着重写一下,用promise代替回调函数所有代码,可以运行:<!DOCTYPE html><html> <head> <meta charset="UTF-8">
2017-04-17 15:31:29
4287
原创 insertAdjacentHTML 与 insertAdjacentText
插入HTML内容与文本内容,功能上与innerHTML和innerTEXT相同。 insertAdjacentHTML 与 insertAdjacentText的用法完全相同,不同之处就是 insertAdjacentText插入的是单纯的文本信息 用法:element.insertAdjacentHTML(position, String);参数position的取值:beforeBegin
2017-04-17 15:05:42
310
原创 js箭头函数 => arrow
//单参数返回后面的表达式x => x*x;//相当于function(x){ return x*x;}//省略了return和{...}//多参数,返回后面的表达式(x,y) => x*y;//相当于function(x,y){ return x*y;}//无参数,() =>{ console.log("no_param_function") };//相当于
2017-04-14 10:54:42
668
原创 js判断类型 是否是数组Array
var a = { "name":'suonidfahao', "job": 'webEnginner',} var b = [1,2,4,4];console.log(a instanceof Array); //falseconsole.log(b instanceof Array); //true
2017-04-12 16:49:12
2665
原创 js中的instanceof 和 typeof
var Cat = function(){ this.name = "maomi"; this.callName = function(){ console.log(this.name); } } var cat1 = new Cat(); console.log(cat1 instanceof Cat);//true
2017-04-12 14:32:52
451
原创 get set操作对象属性(getter,setter)js
getget动态改变对象中所绑定的属性值:var arrayTest = ["test","job"]; var obj = { get a(){ if (arrayT
2017-03-03 14:09:12
1628
原创 const, let和var的作用域及闭包
let let定义的变量作用域是 声明它的块: 如上面的 for、if、function都作为一个块:
2017-03-01 10:08:46
517
原创 argument,callee,caller及callee的用法
function funcArg(a, b) { console.log(funcArg.caller); console.log(arguments.callee); console.log(arguments);}function execArg() { funcArg(10, 23);}execArg();//callee能够打印其本身function c
2017-02-20 23:11:56
489
转载 js获取textarea或者input光标位置,控制光标位置
<head> <meta charset="UTF-8"> <title></title></head><body> <textarea name="text" rows="12" cols="28" id="select"></textarea> <!--<input type="text" name="select" id="select" />-->
2017-02-20 23:09:37
2792
原创 DOMMouseScroll,onmousewheel 鼠标滚动事件js
document.body.onmousewheel = function() { console.log(event.wheelDelta); //向上滚动为120,向下是-120 };
2017-02-20 23:07:35
399
原创 alert,confirm弹出框重写
function ReAlert(title, content, Func) { $('#alertModal').modal('show'); $('#alertModal .sureBtn').off('click').click(function() { Func(content); }) };
2017-02-20 23:04:12
2252
原创 ajax上传form表单(type='file')FormData
以上是一般形式,用的比较多。但是当我们遇到input[type=”file”]时就不知道要如何向后台传输数据了,”.val()”肯定是不行的,所以就讲到FormData这个构造函数:除此之外,你还可以借助FormdData的append()方法来给data添加一些额外的数据:form.append("slogan","suonidafahao!");
2017-02-20 22:32:46
1425
原创 IndexedDB:html5本地数据库存储
html5新增的本地存储数据库 IndexDB,相比cookie和WebStorage更加强大,本文介绍简单的增删改查。demo执行前: var request = indexedDB.open('dataBase', 1);//打开/创建一个数据库,名为student,版本为1. //indexedDB.deleteDatabase('class');//删除名为class的数据库
2017-02-04 15:33:28
687
原创 nodeJs链接Mysql,做增删改查
nodejs连接Mysql,首先安装了mysql之后,在cmd界面安装nodeJs的mysql模块: npm install mysql mysql中创建数据库“nodetry1”,再创建表table2: 指定id为主键: var mysql = require('mysql');//选择数据库和表var TEST_DATABASE = 'nodetry1';var TEST_TAB
2017-02-04 10:28:29
527
原创 js模块化编码
var modula1 = (function(){var a = "innerParam";//内置参数,外部读取不到function f1(x){x += '内置函数,外部不可调用';console.log(x);};var f2 = function(){f1(a);console.log("返回这个函数")};var f3 = function(){
2017-02-03 10:05:38
311
转载 js new操作符
> html> head> meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> title>Insert title heretitle> head> body> script type="text/javascript"> /*没有返回值 function Te
2017-02-03 09:43:35
212
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人