![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript
Kou_Hi
这个作者很懒,什么都没留下…
展开
-
npm 如何处理依赖与依赖冲突
视频通话技术背景视频通话是基于腾讯云的“实时音视频”产品,其根据业务复杂度提供三种版本的sdk:精简版(TRTC)、专业版(Professional)和企业版(Enterprise)。我们这里用的是精简版(TRTC) ,在精简版(TRTC)的基础上,它还提供了“实时语音通话”的场景实践相关的包TRTCCalling,v1.5中用到的就是TRTCCalling。结构图如下:前端代码业务逻辑背景呼叫需要传入参数userID和roomID:客户端当前登录的userID是唯一的(同一个人不同身份不能同时登原创 2021-09-14 10:30:11 · 4287 阅读 · 0 评论 -
手写bind()函数,理解MDN上的标准Polyfill
若还不了解bind、apply、call的用法先看上一篇博文:JS中的call、apply、bind方法 若还不了解Object.create()请先看[ JavaScript创建对象的三种方法] (http://blog.csdn.net/u010552788/article/details/50849191)看了慕课上Bosn讲的Ployfill实现的bind之后,做个总结。视屏网址在看Po原创 2016-03-10 21:52:32 · 7487 阅读 · 3 评论 -
在{{}}表达式中用Math
直接{{Math.floor(yourNum)}}这样是行不通的, 因为ng不认识Math, 要在js里面写$scope.Math = window.Math;原创 2016-05-13 15:52:13 · 1502 阅读 · 0 评论 -
多个数组求交集 js
如下,求profession对应的对象的数组的交集var profession = ["cat", "dog","pig","duck"];var a = { "cat": [1, 2, 3, "12", 4, 22, 11], "pig": [2, 3, "12"], "dog": [2, 4, 3, "12", 11], "duck":[2,11]};var jiaoji原创 2016-05-12 19:14:15 · 6070 阅读 · 0 评论 -
边长、边数可配置的旋转多面体
效果点击这里 https://jsbin.com/kakoxe/edit?html,css,js,output 或者看这里 http://codepen.io/GitKou/pen/GqKZGW (这里加了rotate3d(1,1,0,100deg),使得沿对角线转)css3画出来的多面体,这个多面体的每个侧面都是正方形,底面是个边数可配置的多面体 buildPolyhedron(10, 300原创 2016-05-25 14:44:31 · 1057 阅读 · 0 评论 -
jsbin-jsfiddle-or-codepen-which-one-to-use-and-why
There are lots of css – js playgrounds now in the market, and the most popular ones are JSbin (by Remy Sharp), JSfiddle (by Oskar Krawczyk), codepen (by Chris Coyier, Tim Sabat and Alex Vasquez). So转载 2016-05-25 15:46:57 · 717 阅读 · 0 评论 -
修改button的text
button有两种类型: 第一种 修改方法 document.getElementById("btn1").value="新按钮"; JQuery: .val()第二种: 按钮 document.getElementById("btn1").innerHtml="新按钮";原创 2016-03-24 21:05:45 · 6573 阅读 · 0 评论 -
javascript性能优化-repaint和reflow
repaint(重绘) ,repaint发生更改时,元素的外观被改变,且在没有改变布局的情况下发生,如改变outline,visibility,background color,不会影响到dom结构渲染。reflow(渲染),与repaint区别就是他会影响到dom的结构渲染,同时他会触发repaint,他会改变他本身与所有父辈元素(祖先),这种开销是非常昂贵的,导致性能下降是必然的,页面元素转载 2016-04-06 13:30:43 · 308 阅读 · 0 评论 -
JavaScript的隐式转换和toString valueof的调用情况
一、隐式转换console.log('35'-1);//34 减号转换为数值型计算console.log('35'+2);//352 加号转换为字符串计算console.log(0==false); //trueconsole.log("123"==123); //trueconsole.log(null==undefined);//true=== 严格等于的时候,会首先判断类型是否相同 =原创 2016-04-06 12:28:56 · 1828 阅读 · 0 评论 -
AngularJs ng-repeat 必须注意的性能问题
转自 http://www.cnblogs.com/MigCoder/p/3930264.html?utm_source=tuicool&utm_medium=referralAngularJs 的 ng-repeat 让我们非常方便的遍历数组生成 Dom 元素,但是使用不当也会有性能问题。在项目中我们使用 ng-repeat 加载完一个列表后,如果再次请求数据,然后过滤列表,代码转载 2016-05-17 09:56:14 · 5348 阅读 · 0 评论 -
Js中的空值判断
var a= "";var b = 0;var c = false;a==b;//true,因为""和0在js中逻辑都是falsea==c;//trueb==c;//true原创 2016-05-23 18:43:06 · 1540 阅读 · 0 评论 -
TS Tricks
TS大法好! [TOC]TS Tricks巧用注释/** A cool guy. */interface Person { /** A cool name. */ name: string,}巧用 typeof我们一般先写类型,再使用:interface Opt { timeout: number}const defaultOp...原创 2018-08-01 10:51:07 · 416 阅读 · 0 评论 -
POST请求下载文件
今天帮同事看一个问题:后端由于种种原因(不想改接口或者说前端参数过大),只能接受用post去下载文件。正常情况下第一反应是用xhr对象去发送post请求,结果并没有触发浏览器的下载。看了一下responseHeader里已经设置了content-dispositon:attachment。很郁闷,于是试着window.open(URL.createObjectURL(new Blob(res)...原创 2018-06-06 13:56:37 · 22009 阅读 · 1 评论 -
Debounce&&Throttle
防抖(Debounce)和节流(throttle)都是用来控制某个函数在一定时间内执行多少次的技巧,两者相似而又不同。实际上对于window的resize事件,实际需求大多为停止改变大小n毫秒后执行后续处理;而其他事件大多的需求是以一定的频率执行后续处理。针对这两种需求就出现了debounce和throttle两种解决办法debounce:把触发非常频繁的事件(比如按键)合并成一次执行。原创 2018-01-06 19:45:31 · 333 阅读 · 0 评论 -
理解文件上传
本地上传文件,可以通过event.target.files获取files集合, Files集合中包含一组Fils对象, 每个File对象都对应着一个文件,包含只读属性:name、size、type、lastMOdifiedDate。本地预览文件有很多种方式,可以用FileReader来读取异步本地文件, 也可以通过URL对象来指向保存在File或Blob中数据,createObjectURL(原创 2017-02-09 16:01:52 · 542 阅读 · 0 评论 -
原生js实现表单的正则验证,所有验证都通过后提交按钮才可用
实现了如下功能: 1.用户名:onfouc显示msg规则;onkeyup计算字符,其中中文为两个字符;onblur,验证是否通过 2.邮箱:onblur 正则匹配,正则是根据自己的需求写的,可以根据个人需求更改 3..密码:onkeyup时显示密码的强弱度,onblur时验证密码,是否为相同字符,是否全字符,或全数字,长度是否符合要求 4.确认密码:验证是否和原创 2016-03-30 11:36:14 · 27962 阅读 · 3 评论 -
如何让touchmove之后不触发touchend的事件
<div class="m-action-container"> <a class="u-btn-focus" href="javascript:;" ontouchend="window.setTimeout(function(){twindowrackMail()},0);">当前快件追踪</a> </div>以前的项目上有很多这样的代码原创 2016-06-01 14:38:17 · 6657 阅读 · 1 评论 -
label包裹input,点击label,label响应两次
一、label和input合作的两种形式来自 W3C The label element represents a caption in a user interface. The caption can be associated with a specific form control, known as the label element’s labeled control, either原创 2016-06-22 14:10:56 · 6547 阅读 · 0 评论 -
ES5的getter/setter
两种定义形式。 第一种:var o = { age:'123', name:'gmm', get age(){ return "2"; }, set age(x){ return this.name ="Eliza"; }};o.age = 1;console.log(o.name); //Elizaconsol原创 2016-04-06 11:21:40 · 2004 阅读 · 0 评论 -
使用 AMD、CommonJS 及 ES Harmony 编写模块化的 JavaScript
使用 AMD、CommonJS 及 ES Harmony 编写模块化的 JavaScript作者:ADDY OSMANI 技术审阅:ANDRÉE HANSSON特别鸣谢 JAMES BURKE、JOHN HANN 以及 THOMAS DAVIS原文链接 (中文翻译:GU YILING) 模块化 解耦应用程序的重要性当转载 2016-04-06 09:50:37 · 1160 阅读 · 0 评论 -
CommonJS,AMD,CMD区别
zccst转载 学得比较晕,再次看commonjs,amd, cmd时好像还是没完全弄清楚,今天再整理一下: commonjs是用在服务器端的,同步的,如nodejs amd, cmd是用在浏览器端的,异步的,如requirejs和seajs 其中,amd先提出,cmd是根据commonjs和amd基础上提出的。 为什么晕呢?是因为没用,或用得太少。光看看文章是不行的。转载 2016-04-06 00:07:40 · 2211 阅读 · 0 评论 -
正则表达式(括号)、[中括号]、{大括号}的区别小结
正则表达式的() [] {}有不同的意思。() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。(\s*)表示连续空格的字符串。[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s{1,3}表示匹配一到三个空格。(0-9) 匹配 '0-9′...转载 2016-03-30 21:11:55 · 99283 阅读 · 10 评论 -
解析url成字典对象
var s = "http://www.baidu.com?name=gmm&age=23";var s1 = s.lastIndexOf('?');var s2 = s.substring(s1+1);var re = /(\w+)=(\w+)/g;var params = {};s2.replace(re, function(match, pos, originText){原创 2016-03-30 21:13:00 · 826 阅读 · 0 评论 -
js分别用“==”"==="、"localCompare"比较new String和“string”
var s = "love";var s1 = "love";console.log(s.localeCompare(s1)); //0console.log(s==s1); //trueconsole.log(s===s1); //truevar s3 = new String("love");var s4 = new String("love");console.log(s3.loc原创 2016-03-30 14:35:19 · 3124 阅读 · 0 评论 -
体会String对象的match方法和new RegExp(re).exec(str)的区别
var str ="cat matt daa bat"var re = /at+/g;var match = str.match(re);console.log(match);console.log(new RegExp(re).exec(str));输出如下[ 'at', 'att', 'at' ][ 'at', index: 1, input: 'cat matt daa bat' ]原创 2016-03-30 14:11:10 · 2228 阅读 · 0 评论 -
正则实现String的trim方法
ES5里面的trim()方法是去掉字符串的前后空格,自己写个正则兼容一下不支持ES5的浏览器var re_f = /^\s+/g;var re_e = /\s+$/g;var s = " asd ";console.log(s);console.log(" asd");var s_f = s.replace(re_f, "");console.log(s_f);console.l原创 2016-03-30 13:52:47 · 1178 阅读 · 0 评论 -
实现ES5以下兼容,Object.create()、getElementsByClassName()
Object.create: 搞清楚new F()和Object.create(F.prototype)是一样的if (!Object.create) { Object.create = function(proto) { function F() {}; F.prototype = proto; return new F; }}g原创 2016-03-30 13:15:27 · 746 阅读 · 0 评论 -
原生js实现addClass、removeClass、toggleClass
jquery里有添加样的().addClass和移除样式().addClass和移除样式()>removeClass(); 那么如何用原生js实现?function hasClass(obj, cls) { return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));}function addClass(obj,原创 2016-03-30 12:58:57 · 3027 阅读 · 0 评论 -
js拖拽遇到的问题,待解决
以下拖拽代码,遇到一个问题,点击拖拽狗狗后,鼠标松开,继续移动鼠标,狗狗仍是被拖拽状态,得再次点击鼠标,释放拖拽事件。 我百思不得其解,猜测是不是document.onmouseup没有准确的检测鼠标的释放,诶,不知道window.onload = function() { drag();}function drag() { var oDog = document.getElem原创 2016-03-30 11:13:31 · 1287 阅读 · 1 评论 -
同源安全策略
转自点击打开链接5.3.2 同源安全策略同源策略(Same Origin Policy)是一个很重要的安全理念,是客户端脚本的重要的安全度量标准,其目的是防止某个文档或脚本从多个不同源进行装载。根据这个策略,a.com域名下的JavaScript无法跨域操作b.com域名下的对象。比如,baidu.com域名下的页面中包含的JavaScript代码,不能访问google.com域名下转载 2016-03-08 15:46:41 · 460 阅读 · 0 评论 -
document.documentElement和document.body的区别
网页中获取滚动条卷去部分的高度,可以通过 document.body.scrollTop 来获取,比如使div跟着滚动条滚动:window.onscroll = function (){ var div = document.getElementById("div"); div.style.top = document.body.scrollTop + "px";转载 2016-04-02 14:06:03 · 322 阅读 · 0 评论 -
ES6学习笔记
转自https://segmentfault.com/a/1190000002904199介绍ECMAScript 6 在接下来的一段时间内将成为 ECMAScript的一个标准。这个标准预计在今年的时候就会被签署,不管在Github,还是在很多社区,javascript爱好者已经早已开始拥抱变化,享受ES6 带来的美好,这篇文章将介绍ES6的一些新特性。由于ES6 还没有转载 2016-04-05 22:50:59 · 527 阅读 · 0 评论 -
Javascript ES3执行上下文
看了慕课网Bosn老师的视频和深入理解JavaScript之执行上下文,做个总结。 目录: **一. 执行上下文 二. 变量初始化阶段 三. 代码执行阶段 四. 综合示例**一,执行上下文**三种执行上下文的情况:** ①全局级别的代码 - 这个是默认的代码运行环境,一旦代码被载入,引擎最先进入的就是这个环境。 ②函数级别的代码 - 当执行一个函数时,运行函数体中的原创 2016-02-27 11:51:03 · 458 阅读 · 0 评论 -
JSONP处理同源策略
跨域网络访问EDIT同源策略控制了不同源之间的交互,例如在使用XMLHttpRequest 或 )代表文档中的一个图像。" style="margin:0px; padding:0px; border:0px; color:rgb(0,149,221); text-decoration:none"> 标签时则会受到同源策略的约束。交互通常分为三类:通常允许进行跨域写操作(Cros转载 2016-04-05 00:09:29 · 543 阅读 · 0 评论 -
js设置cookie,为cookie中设置多个key value
一下是犀牛书中实现的操作cookie的apifunction cookieStorage(maxage, path) { var cookie = (function() { var cookie = {}; var all = document.cookie; if(all == "")原创 2016-04-04 20:46:21 · 17718 阅读 · 0 评论 -
JavaScript中函数参数的值传递和引用传递
转自这里写链接内容 JavaScript中函数参数的值传递和引用传递 结论:对于数字、字符串等是将它们的值传递给了函数参数,函数参数的改变不会影响函数外部的变量。 对于数组和对象等是将对象(数组)的变量的值传递给了函数参数,这个变量保存的指向对象(数组)的地址。当函数改变这个地址指向的对象(数组)的内容时,同时也改变了函数外部变量指向的对象(数组)的内容;当函数改变的是变量的地址时,实际就转载 2016-03-10 22:39:32 · 447 阅读 · 0 评论 -
JS中的call、apply、bind方法
转自点击打开链接JS中的call、apply、bind方法一、call()和apply()方法1.方法定义call方法:语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])定义:调用一个对象的一个方法,以另一个对象替换当前对象。说明:call 方法可以用来代替另一个对象调用一个方法。cal转载 2016-03-10 19:13:44 · 1202 阅读 · 0 评论 -
JavaScript创建对象的三种方法
1. var person = new Object();这行代码创建了Object引用类型的一个新实例,然后把该实例对象保存在变量person中。使用的构造函数是Object,它只为新对象定义了默认的属性和方法。2. var person={name: “Jerry”, age: 100};这种方法叫对象字面量表示法。(对象名也可以使用字符串,如”name”: Jerry)。在通过对象字面量定义对原创 2016-03-10 18:55:12 · 4842 阅读 · 0 评论 -
javascript处理HTML的Encode(转码)和Decode(解码)总结
看decode,这篇写的比较好理解,转自点击打开链接HTML的Encode(转码)和解码(Decode)在平时的开发中也是经常要处理的,在这里总结了使用javascript处理HTML的Encode(转码)和解码(Decode)的常用方式一、用浏览器内部转换器实现转换1.1.用浏览器内部转换器实现html转码 首先动态创建一个容器标签元素,如DIV,然后将要转转载 2016-03-10 10:56:24 · 7143 阅读 · 0 评论 -
chrome中js的中文乱码
在网上搜到的都是说在,然而这对我并不管用,后来发现是浏览器自身的问题,在设置里更改字体,编码方式选utf-8,就okay!记得重启浏览器!原创 2016-03-17 21:03:28 · 8101 阅读 · 0 评论