js原生
stupidcc
人之初 性本善
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
前端post下载实现
```javascriptexportService(url,params){ url = this.budService.getBaseUrl()+url; return this.http.post(url,params,{responseType:'arraybuffer',observe:'response'}).toPromise().then(res=>{ ...原创 2020-02-19 10:16:18 · 513 阅读 · 0 评论 -
js 设计模式(一)原型模式
首先学习的第一个设计模式是--原型模式原型模式实现的关键是js语言提供了克隆方法 ES5的Object.create()var Plan = function () { this.blood = 100 this.attackLevel = 1 this.defenseLevel = 1}var plan = new Plan()plan.blood = 500plan.att...原创 2018-02-23 14:06:39 · 184 阅读 · 0 评论 -
let在for循环中的特点
var a = [] for (let i =0; i<10; i++) { a[i] = function () { console.log(i) } } a[6]() // 6变量i是let声明的 当前i只在本轮循环有效,所以每一次循环的i其实都是一个新的变量。你可能会问:如果每一轮循环的变量都是重新声明的 那它怎么知道上一轮循环的值,从而计算出...原创 2018-03-23 16:26:56 · 2847 阅读 · 0 评论 -
小程序的坑
1 不能用overflow:hidden (后患无穷)2 日期格式最好是yyyy/MM/dd hh:mm:ss 因为yyyy-MM-dd hh:mm:ss在个别版本的手机上有问题3 xml 代码里不能写js代码 但是可以比较大小 可以使用三目运算但是浮点数进行比较时会有精度问题 甚至是大小比较错误比如我目前遇到的0.9091<0.9282 在小程序里就总是错误 打印0.9091*1000...原创 2018-05-25 14:16:39 · 408 阅读 · 0 评论 -
如何让滚动条不占宽度
div定义的宽度 = 内容宽度+滚动条宽度出现滚动条会导致内容偏移,想让滚动条不占宽度 不影响内容的排版,百度到的方法都不能解决问题原来滚动条是可以设置宽度为0的这样滚动条不出现,内容也可以滚动 selector::-webkit-scrollbar{width:0;}...原创 2018-10-10 18:32:23 · 27526 阅读 · 4 评论 -
ES6数组新增方法
//find findIndex数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。find的回调函数也可以接受三个参数item,index,arrconsole.log([1,2,3,4,5,6,-9].find...原创 2019-04-23 12:42:57 · 213 阅读 · 0 评论 -
扩展运算符解构赋值对象注意点
1解构赋值的拷贝是浅拷贝,即如果一个键的值是复合类型的值(数组、对象、函数)、那么解构赋值拷贝的是这个值的引用,而不是这个值的副本。let obj={a:{b:2}}let {...x} = objobj.a.b=3console.log(x.a.b) //32扩展运算符的解构赋值,不能复制继承自原型对象的属性。***let o1={a:1}let o2={b:2}o2...原创 2019-04-23 14:48:09 · 1429 阅读 · 0 评论 -
webpack使用知识点
主要是看了阮一峰老师的wepack-demos做一下笔记,原链接:https://github.com/ruanyf/webpack-demos什么是webpack?webpack是为浏览器构建js模块脚本的前端工具webpack需要一个配置文件,名叫:webpack.config.js1 入口文件webpack会读取入口文件,并构建成bundle.js文件// cent...原创 2019-04-29 11:12:43 · 326 阅读 · 0 评论 -
发布-订阅模式
发布-订阅模式在很多前端流行框架中被使用,比如backbone,vue.所以很有必要花时间和精力来了解一下。发布-订阅模式又叫观察者模式。它定义对象间的一种一对多的关系。当一个对象的状态发生改变时,所有依赖它的对象都将得到通知。在JavaScript开发中,我们一般用事件模型来替代传统的发布-订阅模式。如何一步步实现发布-订阅模式1 首先要指定好谁充当发布者。(比如售楼处)2 ...原创 2019-05-05 10:17:32 · 241 阅读 · 0 评论 -
js对象的继承有哪些实现方式归总
实现对象obj继承prot1 简单粗暴 直接指定原型对象的值const obj={ _proto_:prot, foo:13}2 Object.create创建一个新对象,使用现有的对象来提供新创建的对象的__proto__const obj=Object.create(prot)obj.foo=1233 Object.assign,核心还是crea...原创 2019-04-24 23:56:56 · 347 阅读 · 0 评论 -
JavaScript的单例模式没有那么简单
想必大家都知道单例模式就是不管调用多少次new命令,始终只能创建一个实例对象。写个方法来看看javaScript的单例长什么样。下面这个例子是负责在页面中创建唯一的div节点。代码如下var CreateDiv = (function(){ var instance; var CreateDiv = function(html){ if(instance){ ...原创 2019-04-29 21:48:59 · 177 阅读 · 0 评论 -
js在执行new操作的时候都做了哪些事情
// 构造函数 function Car (logo) { this.logo = logo || 'unknown name' } Car.prototype={ start(){}, run(){}, stop(){} } //创建对象 let landRover = new Car('landrover')执行new操作时1 ...原创 2019-04-25 15:07:38 · 1074 阅读 · 0 评论 -
策略模式
啥时策略模式?举个例子,假如你从北京到杭州,可以选择坐飞机去,还可以坐汽车去,还可以自驾去。每个方法都可以去。策略模式就是实现一个任务有多个方法,这些方法都可以相互替换。把这些方法封装起来就是策略模式。再举个例子,年终奖发放,绩效s的年终奖是工资的4倍。绩效A的年终奖是工资的3倍。绩效B的年终奖是工资的2倍。js实现var strategies={ S: func...原创 2019-04-30 16:29:09 · 150 阅读 · 0 评论 -
代理模式
代理模式:为一个对象提供一个占位符或者代用品,以便控制对他的访问。代理模式非常的有意义,在生活中有很多代理模式的例子。比如明星都有经纪人作为他的代理,如果想请明星演出,要先跟他经纪人沟通,经纪人把细节报酬都谈好后在请明星签合同。虚拟代理就是把一些开销很大的对象,延迟到需要他的时候再去创建。虚拟代理实现图片加载图片加载,当网络不好或者图片太大的情况下会出现很长时间的空白,我们可以考虑...原创 2019-05-01 16:47:43 · 152 阅读 · 0 评论 -
去掉小数后面多余的零 如1.2000除以1 等于1.2 及原理
去掉小数后面多余的零需求有时候需要我们保留几位小数,如果用toFixed()方法 小数不够会零来凑 但是如果需求要求不能有多余无用的零那怎么处理呢方法1 可以用全局方法parseFloat()parseFloat(1.23000) ==>1.23原理:parseFloat的参数是string (1.23000).toString ==>1.23 所以最后结果是1.23方法而 1.2...原创 2018-03-08 16:43:31 · 1288 阅读 · 0 评论 -
关于this指向的小例子
let obj = { fn: function () { console.log(this) let a = function () { console.log(this) } let b = ()=>{ console.log(this) } a() b() }原创 2018-02-06 16:20:09 · 244 阅读 · 0 评论 -
计算字符串的字节数
str.charCodeAt(index)返回字符串中字符的unicode编码unicode大于255的是两个字节 小于等于255的是一个字节UNICODE 是目前用来解决 ASCII 码 256 个字符限制问题的一种比较流行的解决方案。大家知道,ASCII 字符集只有256个字符,用 0-255 之间的数字来表示。包括大小写字母、数字以及少数特殊字符;如标点符号、货币符号等原创 2017-05-05 11:19:08 · 3682 阅读 · 0 评论 -
匿名函数的this指向
在闭包函数中使用this对象也可能会导致一些问题。我们知道,this对象是在运行时基于函数的运行环境绑定的:在全局函数中,this对象等于window,而当函数被作为某个对象的方法使用时,this等于那个对象。不过,匿名函数的执行环境具有全局性,因此其this对象通常指向window。但有时候由于编写闭包的方式不同,这一点可能不会那么明显。下面看一个例子:var name="window";原创 2017-05-05 11:14:35 · 2627 阅读 · 0 评论 -
localStorage与sessionStorage
HTML5提供两种web存储方法,localStorage与sessionStoragelocalStorage与sessionStorage区别localStorage没有过期时间,只要不clear或remove,数据会一直保存sessionStorage针对一个session进行数据存储,生命周期与session相同,当用户关闭浏览器后,数据将被删除。特点: 1:loca原创 2017-05-05 11:10:02 · 326 阅读 · 0 评论 -
js base64编码 解码
//1 加密 var str='124中文内容' var base=new Base64(); var result=base.encode(str) console.log(result) //2解密 var result2=base.decode(result) console.log(result2)base64.js/** *转载 2017-04-20 09:38:24 · 350 阅读 · 0 评论 -
ES5 Array新增方法
ES5数组新增了几个方法,已经不是什么新鲜事,我也已经用过几个,用起来非常方便,会帮我们解决很多逻辑复杂的问题。但是不常用就会忘,所以这里记录一下。方便自己查看。遍历:回调函数的参数 1 当前遍历的对象本身item 2当前遍历的对象的下标index 3 遍历的数组本身 arrayvar names=["alice","lucy","divide","kate"];//forEach...原创 2017-04-07 11:25:40 · 399 阅读 · 0 评论 -
为什么用{}.toString.call(obj)来判断数据类型
先看一下typeofvar a;console.log("a:"+typeof a)//a:undefined var b=null;console.log("b:"+typeof b)//b:object var c=undefined;console.log("c:"+typeof c)//c:undefined var d=new Object();console.l转载 2017-04-06 15:11:53 · 1752 阅读 · 0 评论 -
js原生 获取url参数
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); var context = ""; if (r != null) con原创 2017-05-05 11:50:36 · 1399 阅读 · 0 评论 -
blur事件与click事件冲突怎么解决
今天遇到一个问题 一个文本框输入内容的时候会显示一个列表 失去焦点时列表消失 列表中的数据点击时 内容显示到文本框中 但是点击列表数据的click事件与input的blur事件冲突 没有执行 后来把列表的click事件改成mousedown就可以了 但是mousedown为什么跟blur不冲突 而click就冲突呢?先留个疑问吧 以后遇到问题可以换种方法就可以解决 至于原理 以后深究原创 2017-07-20 17:54:56 · 819 阅读 · 0 评论 -
js for循环注意事项
今天写了一个递归方法 递归遍历一个树结构的数据 根据id找到对应的text,递归代码简单 却出现了无限递归 导致每次打开网页都会导致浏览器崩溃 研究了一中午 最后在循坏语句中for(i=0;i<array.length;i++)中加了var就好了;原来是i作用域的问题导致的,我们都知道声明变量时 用var声明 它就是局部变量 不用var声明 它就是全局变量 ;一般写循环,我都习惯不写var 一原创 2017-07-31 14:25:34 · 568 阅读 · 0 评论 -
js 算法面试题
1 给你一组数据 找出规律 写一个方法 传入位置n输出第n个位置的数据,n从1开始算.输入8输出211,1,2,3,5,8,13,21,34,55思路:观察数据规律可以知道每一项都是前两项的数据之和 方法1 递归 f(n)=f(n-1)+f(n-2) function f(n) { if(n<=2)return 1 return f(n-1)+f(n-2原创 2017-08-17 12:59:32 · 978 阅读 · 0 评论 -
圆周运动与勾股定理
原来js还可以和数学公式勾股定理结合,而且他们结合后并没有变得枯燥无味,反而可以制作出更好的动画。这面将一个js动态画圆的demo,在这之前需要普及一下数学知识,虽然这些知识初中就学过,估计也都还给老师了。哈哈勾股定理 直角三角形的两个直角边的平方和等于第三边的平方和,a^2+b^2=c^2sin30=1/2 cos60=1/2 (因为根号不会打 所以sin60 cos30就不普及原创 2017-08-17 22:13:53 · 616 阅读 · 0 评论 -
js面试题(一)
记录几个比较典型的js面试题1 将类似 border-bottom-color的字符串转成驼峰形式的字符串方法1 思路:将字符串以‘-’为分割点 分割成数组,利用字符串的charAt(0)定位到首字母,利用字符串的toUpperCase()转成大写,字符串的substring(1)获取到字符串除了第一位剩余的字符,最后大写的首字母与剩余字符链接即可 function test(...原创 2017-08-16 09:37:25 · 474 阅读 · 0 评论 -
js面试题(二)
1 数组去重方法1 思路:将数组先排序 相同的元素排在一起,然后找一个对比项,从头开始对比 相同的则删除 不同则将不同的作为对比项继续对比var arr=[2,6,9,1,3,4,8,1,2,6,6,3,8,5] function test(arr) { arr=arr.sort();//[1,1,2,2,3,3,4,,5,6,6,6,,8,8,9]原创 2017-08-17 10:49:33 · 325 阅读 · 0 评论 -
函数声明与函数表达式的区别
一:函数声明中的函数名是必须的 ,函数表达式中函数名是可选的function add(a,b) { return a+b } let sum=function(a,b){ return a+b }二:函数声明的函数可以在函数声明前就被调用,而函数表达式定义的函数只能在声明之后调用因为两种方式定义的函数的解析方式不同,解析器会事先读取函数声明,即函数声原创 2017-09-11 17:42:03 · 241 阅读 · 0 评论 -
js控制上传文件大小
var isIE = !-[1,];var target=document.getElementById("fileId"); if (isIE && !target.files) { var filePath = target.value; var fileSystem = new ActiveXObject("Scripting.FileSyst原创 2017-05-05 11:22:56 · 375 阅读 · 0 评论
分享