JavaScript
文章平均质量分 67
Luffy_ying
这个作者很懒,什么都没留下…
展开
-
移动端 window.history.go(-1)不刷新的问题
移动端的h5开发,总是会有各种各样的问题,世间本没有bug,写着写着就有了。近期开发遇到这样一个功能:A页面上有一段链接,通过window.location.href = 'xxx', 跳转到另一个页面B,完成一系列操作后,又要跳回来之前的A,但这个时候A页面应该是需要重新刷新的,数据要重新请求,下面贴出A 页面部分代码:但测试华为及小米低端版本的时候,并没有刷新,抓包并没有抓到请求,但是奇怪的是,代码确实运行到请求接口的数据了,可能的原因应该是缓存了,于是搜索了一下,加上了一个方法:这个方原创 2020-05-20 17:38:34 · 3158 阅读 · 0 评论 -
一次白屏经历
立案标题:公司的app嵌入的H5页面出现白屏案发场景:该页面仅仅显示出标题,因其他原因没有抓包处理,设备 android 6.0.1 具体机型由图片可知(此处给大家介绍一个方便好用的调试移动端的组件 vconsole,直接install即可,原谅我移动端开发经验少,真的第一次用啊!)开始分析:DOM是空的,第一反应就是去看一下DOM,但是根本就没有给我这个机会,我的vconsole根本就没有显示出来,难道是react代码没解析成功?在js中加入log,也都没有任何反应,就像没有执行js一样。原创 2020-05-13 20:00:22 · 231 阅读 · 0 评论 -
你不知道的javascript(三)
函数作用域和块作用域作用域包含了一系列的“气泡”,每一个都可以作为容器,其中包含 了标识符(变量、函数)的定义。这些气泡互相嵌套并且整齐地排列成蜂窝型,排列的结构是在写代 码时定义的。 1.函数中的作用域javascript具有基于函数的作用域,每声明一个函数都会为其自身创建一个气泡,事实上这不完全正确function foo(a){ var b = 2;原创 2016-12-09 11:13:56 · 306 阅读 · 0 评论 -
你不知道的javascript(四)
提升之前我们讲过var a = 2;后发生了什么,它回进行两个部分,第一部分是编译,而第二部分是执行。故应该是声明在前,赋值在后a =2;var a;console.log(a);//2上面三行代码被这样执行:var a ;a = 2;console.log(a);but ...console.log(a);//undefinedvar a = 2;原创 2016-12-09 16:07:46 · 353 阅读 · 0 评论 -
链式调用
function Foo(name){this.name = name}Foo.prototype.read = function(){console.log(this.name+'read');return this;}Foo.prototype.listen = function(){console.log(this.name + 'listen');}原创 2016-12-16 20:35:46 · 373 阅读 · 0 评论 -
你不知道的javascript(六)
原型JavaScript中的对象有个特殊的内置属性叫:Prototype,其实就是对于其他对象的引用,几乎所有对象都会被赋予一个非空的prototype的属性值,当你试图引用对象的属性时会触发get操作,这个操作第一步就是检查对象自身是否有这个属性,有的话就使用它,没有的话,就会继续访问对象的原型链,直到找到,或者没找到返回undefined。最顶端的原型是Object.prototype。使原创 2016-12-15 16:16:05 · 450 阅读 · 0 评论 -
你不知道的js(中)之基本类型
基于你不知道的js中,里面的内容都是基于es6的引擎环境,所以增加了一种内置类型:一共是:(1)null(2)undefined(3)boolean(4)number(5)string(6)object(7)symbol当你使用typeof 来查看类型的时候,返回的是类型的字符串,其中,对于null的判断,我们采用复合条件来检测null值的类型:var a =原创 2017-01-10 11:36:23 · 469 阅读 · 0 评论 -
可枚举属性和不可枚举属性
在js中,对象的属性分为可枚举和不可枚举,它们是由属性的enumerable值决定的,不可枚举属性,用for...in是遍历不到的,js中基本包装类型的原型属性是不可枚举的,但是非基本包装类型的原型属性是可以枚举的。其中,定义Object对象的prototypeIsEnumerable()方法可以判断此对象是否包含某个属性,并且这个属性是否可枚举。再次,Object。defineProtp原创 2017-01-12 17:50:18 · 7205 阅读 · 2 评论 -
关于前端开发中的模块化理解
作为一个前端开发者,掌握必要的专业知识是必要的,css,js,html,frame等,但对于规范还是要有一定的掌握,如开发规范,前端越来越复杂,其中模块化的问题引起重视,工程的模块化究竟是什么?首先来了解下各种概念:(1)CommonJS 它就是为了JS的表现来制定规范,因为js中没有模块的功能,CommonJS应运而生,它定义的模块分为:模块引用require 、模块定义export原创 2017-02-10 14:55:36 · 2810 阅读 · 0 评论 -
js之hook
JS中的钩子:钩子是将需要执行的函数或者其他一系列动作注册到一个统一的入口,程序通过调用这个钩子来执行这些已经注册的函数,还有就是提供一个可以响应默认流程的机制的时机,像react中生命周期的componentWillMount,componentDidMount等,这些都是钩子函数。有的时候,在相同的页,或者不同的页中我们会写很多重复的代码,比如一些初始化的条件,那最近写过的栗子来说:在原创 2017-03-06 16:42:50 · 3678 阅读 · 0 评论 -
你不知道的javascript(二)
1.词法作用域 就是定义在词法阶段的作用域,作用域查找会在找到第一个匹配的标识符时停止。在多层的嵌套作用域中可以定义同名的标识 符,这叫作“遮蔽效应”(内部的标识符“遮蔽”了外部的标识符)。抛开遮蔽效应,作用域查找始终从 运行时所处的最内部作用域开始,逐级向外或者说向上进行,直到遇见第一个匹配的标识符为止。全局变量会自动成为全局对象(比如浏览器中的window对象)的属性,因原创 2016-12-08 20:47:12 · 361 阅读 · 0 评论 -
你不知道的javascript(一)
1.引擎从头到尾负责整个javascript程序的编译及执行的过程。它可以根据需要创建并储存变量。编译负责语法分析及代码生成等。作用域负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限。先看看他们三兄弟的大概关系:对于声明一个变量并赋值的过程。1) 首先,vara在其作用域中声明新变量。这原创 2016-12-08 18:26:09 · 285 阅读 · 0 评论 -
事件(1)——事件冒泡与捕获
JavaScript与HTML的交互是通过事件实现的,什么是事件?事件就是文档或者浏览器窗口发生一些特定的交互瞬间。什么是事件流?事件流描述的是从页面中接收事件的顺序,IE的事件流是事件冒泡流,而Netscape Communicator 的事件流是事件捕获流。(1)IE中的事件流: var ch = document.getElementById('div1');原创 2016-09-07 16:46:34 · 279 阅读 · 0 评论 -
事件(2)——事件处理程序
事件处理程序的名字以“on”开头,如click事件的事件处理程序就是onclick,为事件指定处理程序的方式有如下几种:(1)HTML事件处理程序or function show(){ alert('haha'); }缺点:首先,存在时差问题,因为用户可能会在HTML元素一出现就触发相应事件,在执行事件处理程序的时候可能还没有条件,(例如触发函数写在原创 2016-09-07 17:13:56 · 300 阅读 · 0 评论 -
事件(3)——事件对象
在触发DOM上的某个事件的时候,会产生一个事件对象event,这个对象包含着所有与事件有关的信息,包括导致事件的元素、事件类型等,所有的浏览器都支持event对象,但支持方式不同。(只有在事件处理程序执行期间,event对象才会存在,一旦执行完成就会别销毁)(1)DOM中的事件对象 var btn = document.getElementById('btn'); btn.原创 2016-09-07 19:44:16 · 308 阅读 · 0 评论 -
关于原生事件绑定和jquery的On
先简单说明下addEventListener这个函数,代码如下:1.window.onload = function(){ var a = document.getElementById("a"); a.addEventListener("click",function(){ console.log("a1"); }) a.add原创 2016-10-28 19:34:33 · 433 阅读 · 0 评论 -
神奇的this
有一点很重要,this是个变色龙,它指向谁是不定的,也不是在函数定义的时候确定的栗子1:function a(){ var user = "追梦子"; console.log(this.user); //undefined console.log(this); //Window}a();window.a();栗子中的函数a 是window的原创 2016-10-31 15:52:52 · 240 阅读 · 0 评论 -
bind , call and apply
之前记录过神奇的this,我们要想随着自己的意愿掌控this,那就需要这三个小帮手,哈哈,bind call and apply.look a example please:var a = { user:"路飞", fn:function(){ console.log(this.user); //路飞 }}var b = a.fn;b.call原创 2016-10-31 18:28:02 · 245 阅读 · 0 评论 -
arguments
1.什么是arguments:它是一个类数组对象,代表传给一个function的参数列表。它的内容表示了函数执行时传入函数的所有参数,可以用arguments[0],arguments[1]...来获取单个参数。可以用arguments.length来获取参数个数 function test(){ console.log(arguments); } test原创 2016-11-01 09:14:57 · 279 阅读 · 0 评论 -
hasOwnProperty() and isPrototypeOf()
南来的,北往的,注意注意,请注意,hasOwnProperty() and isPrototypeOf()都是Object.prototype下面的两个方法,二者的区别:一、hasOwnProperty() 用来判断某个对象是否含有指定的自身属性obj.hasOwnProperty('a')//实例obj是否含有属性a,有->true,else->false,但是这个方法会忽略从原型继原创 2016-11-01 11:08:11 · 379 阅读 · 0 评论 -
JS对象(1)
1.对象的语法对象来自于两种形式:声明形式 and 构造形式一个对象的字面语法是这样:var obj = { key:value}构造形式是这样:var obj = new Object();obj.key = value;在JavaScript中的六种主要的类型有:string number boolean null undefine objec原创 2016-11-17 19:23:36 · 321 阅读 · 0 评论 -
javascript 中的各路for循环
一、for 看下最简单也是我们最普遍使用的 const arr = [1,2,3]; for(let i=0;i<arr.length;i++){ console.log(arr[i]); } for(let i=0;len=arr.length,i<len;i++){ console.log(arr[i]); console.lo原创 2016-12-07 10:55:59 · 273 阅读 · 0 评论 -
原生JS的事件绑定
原生js的事件绑定有两种方法:1.通过HTML属性处理函数的绑定example:1)click2)clickfunction la(){alert('xixi');}这种方法适合编写简短的小事件,不会涉及到太大的性能问题。2通过JavaScript对象属性来绑定var btn = document.getElementById('oBtn')原创 2016-07-06 11:04:21 · 15945 阅读 · 0 评论