
JavaScript
文章平均质量分 72
My-Lady
这个作者很懒,什么都没留下…
展开
-
Js中有关变量声明和函数声明提升的问题
在ECMAScript5中没有块级作用域一说,只有函数作用域和全局作用域,在其中声明的变量和函数和其他语言的展现形式不同,在某些情况下不一定需要先定义后使用,函数和变量的使用可以在其声明之前,这到底是怎么回事呢?让我们一起揭开变量声明提前的神秘面纱!!!一、变量声明提升1 var a = 10;2 function test() {3 a = 100;4 a原创 2017-08-18 09:45:14 · 374 阅读 · 0 评论 -
Jquery中的队列函数quene()、dequene()、clearQuene()
jQuery中的queue和dequeue是一组很有用的方法,他们对于一系列需要按次序运行的函数特别有用。特别animate动画,ajax,以及timeout等需要一定时间的函数。Queue()和dequeue()方法是都既具有工具方法,又具有实例方法,但是clearQueue()只是实例方法只能在jquery对象上进行使用在调用quene之前如果有调用动画函数,将已经从产生了默认的队列fx,原创 2017-08-18 09:42:39 · 1983 阅读 · 0 评论 -
jquery中的$(document).ready()、JavaScript中的window.onload()以及body中的onload()、DomContentLoaded()区别
$().ready()、$(handler)、$(document).ready(handler)均不是原生JS中的,都是jQuery中封装的方法。这些事件在当页面的dom节点加载完毕后就执行,无需等待页面中的图片等加载完成。DomContentLoaded是原生的表示在Dom节点加载完毕之后就执行该事件。 window.onload()以及body中的onload()两者都表示当页面原创 2017-08-18 09:42:24 · 338 阅读 · 0 评论 -
JS中的事件冒泡(Bubble)和事件捕获(capture)以及如何阻止事件的冒泡
对“捕获”和“冒泡”这两个概念,通常我们对冒泡了解和使用的会更多一些,因为在我们使用的所有浏览器中,都支持事件冒泡 ,即事件由子元素向祖先元素传播的,就 像气泡从水底向水面上浮一样。而在像firefox,chrome,safari这类所谓的标准浏览器中,事件传播通常是有三个阶段的:事件捕获阶段,事 件目标阶段,事件冒泡阶段,这三者的执行的顺序是先捕获在冒泡。对于捕获阶段,这个很少 有用武之地,所以原创 2017-08-18 09:42:21 · 1023 阅读 · 0 评论 -
jQuery对象与JS原生dom对象之间的转换
jQuery就是JS的一个扩展库,工具库,提供很多方便快捷的方法,所以将JS对象转换为jQuery对象后,能更方便地操作这个对象。但是jQuery对象也不是万能的,有一些JS对象有的能,jQuery对象并没有提供,所以需要转换回JS对象,才能进行操作。另外一种情况可能是,你使用某些第三方库,接口函数只能接受JS对象或者jQuery对象,那么你就需要在这两者之间进行转换。1、将jQuery转换为原创 2017-08-18 09:42:16 · 359 阅读 · 0 评论 -
JS中数组对象去重
JS数组去重JS中对数组去重最好不要用unique方法,该方法主要是对dom节点数组的去重,如果对普通的数组元素去重只会去掉与之相邻的重复元素,也就是如果数组中还有不相邻的重复元素存在,将不会被去掉,而且有时候会出现问题,所以对数组去重可以利用如下方法: 先对数组a进行遍历,同时创建一个新的数组对象arrfor (var i=0 ;i{ if (arr.indexOf(a[i])原创 2017-08-18 09:42:11 · 1116 阅读 · 0 评论 -
利用JS脚本通过getAttribute()和setAttribute()等对CSS样式进行操作
HTML中引入CSS样式的方式有三种:1.最常用的,引入样式表,在样式表中编写样式,引入方式如下:2.在Html头部用包起来,在这里面编写样式:*{padding: 0;margin: 0}3.在标签里面直接编写行内样式。下面就简单的介绍下利用JS对内联样式进行操作: 脚本化CSS最直接的方法就是更改单独的文档元素的style的属性值,类似大多数的HTML的属性,style也是元原创 2017-08-18 09:42:01 · 1688 阅读 · 0 评论 -
【JS数据类型】JS中的判断数据类型函数
一、JS中的基本数据类型 string、boolean、null、undefined、number,symbol(ES6) 基本数据类型通常指的是直接利用字面量的方式进行赋值的情况,其中要注意的是,对于已经初始化的基本数据类型(即var a = 1234),是可以直接调用其对应对象的方法的,再调用方法的时其本质是浏览器实现了对基本数据类型的装箱和拆箱操作,再调用方法时将其转换为对引得对原创 2017-08-19 14:24:15 · 1210 阅读 · 0 评论 -
Web worker 与JS中异步编程的对比
.浏览器线程浏览器有这么几大线程:UI渲染线程(用于页面的渲染),javascript引擎线程(用于处理js),GUI事件触发线程(用于交互)。有时会开启的线程:http传输线程,定时触发线程(定时器)它们之间的关系是什么呢?问,以上代码何时alert“end”呢? 测试一下:答案是:永远都不会alert。解析:JavaScript引擎是单线程的,事件触发排队等候。所有任务按照触发时间先后排队处理。 上例中,排队的顺序状态原创 2017-08-18 09:44:13 · 1245 阅读 · 0 评论 -
JS以及CSS对页面的阻塞
一、JS阻塞 所有的浏览器在下载JS文件的时候,会阻塞页面上的其他活动,包括其他资源的下载以及页面内容的呈现等等,只有当JS下载、解析、执行完,才会进行后面的 操作。在现代的浏览器中CSS资源和图片image资源是并行下载的,在IE6中默认的并行的加载数目是2个,在IE6以后以及其他的浏览器中的默认的并行加载数目是6个。在浏览器从服务器接收到HTML文档后,并把HTML在内存中转换为DOM原创 2017-08-18 09:45:04 · 402 阅读 · 0 评论 -
【事件绑定的方式】兼容浏览器的事件监听器的设计
一、兼容浏览器的事件监听器 主要是兼容IE8以前的浏览器,addEvent方法中介绍了三种绑定事件的方式,其中要注意: (1)在IE的事件绑定方式中,事件处理函数里面的事件对象时挂在window上面的,所以获取event对象时需要利用window.event来获取 (2)addEventListener添加监听器时注意事件的冒泡和事件的捕获,即该方法的第三个参数,事件的冒泡和捕获注意的事项参见原创 2017-08-19 11:33:59 · 448 阅读 · 0 评论 -
【学习笔记】实现顶部滚动条
静态实现顶部滚动条主要使用以下的两种方式: (1)利用CSS3 的animation属性实现 (2)利用jQuery的animation动画实现 以下附上代码: CSS实现:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>顶部进度条</title> <style type="t原创 2017-09-11 12:07:01 · 1529 阅读 · 0 评论 -
【学习笔记】百度前端面经知识点
一、img标签中的src为空会导致什么情况 通常有时候会有两次请求的情况出现,如果页面中有img标签或者是href标签,则要注意其中的src或者是href是否为空的情况,当两者为空时,同时当前页面的URL请求带有参数时,首先浏览器默认为缺省值,会请求当前网页的路径,然后利用当前路径去掉参数在再载入一次,所以会出现重复载入的情况。 由上面知,在src没有进行初始化时,最好不要设置该属性,这样可以防原创 2017-09-11 21:35:29 · 535 阅读 · 0 评论 -
js中eval() 方法的使用以及一些特殊的使用方式
1、eval方法只能在非严格模式中进行使用,在use strict中是不允许使用这个方法的。2、eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。 需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值。如下: var code1='"a" + 2'; //表达式 var原创 2017-08-18 09:42:46 · 4766 阅读 · 0 评论 -
JQ中的延迟对象deferred中的promise等的使用
一、什么是deferred对象?开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异步的操作(比如ajax读取服务器数据),也有同步的操作(比如遍历一个大型数组),它们都不是立即能得到结果的。通常的做法是,为它们指定回调函数(callback)。即事先规定,一旦它们运行结束,应该调用哪些函数。但是,在回调函数方面,jQuery的功能非常弱。为了改变这一点,jQue原创 2017-08-18 09:42:51 · 417 阅读 · 0 评论 -
cookie和session的区别异同
1、用于保存页面信息:如自动登录,记住用户名2、对于同一个网站只有一套cookie,它是以域名为单位的,一个域名就是一套,数量大小有限4k-10k,同时会具有过期时间3、JS中通过document.cookie进行调用 a、设置:在cookie中利用document.cookie=”user=ni;expires=Date;Path=path;HttpOnly;等”,通过此方法依次设置一个原创 2017-08-18 09:44:24 · 213 阅读 · 0 评论 -
标准模式和混杂模式下浏览器的可视区域的宽高问题
利用document.compatMode可以用来判断浏览器的模式是标准模式还是混杂模式,(1) CSS1Compat表示的是标准模式(2) BackCompat表示的是混杂模式不同的模式获取宽高的方式是不一样的,为了兼容一般要么对浏览器的工作模式加以判断严要么则是利用利用||运算兼容标准模式:document.documentElement.clientHeig原创 2017-08-18 09:44:21 · 238 阅读 · 0 评论 -
瀑布流布局
实现瀑布流的要点:(1)等宽不等高(2)可以利用懒加载一、利用纯JS方式实现瀑布流:HTML文件如下: 瀑布流布局原创 2017-08-18 09:44:18 · 314 阅读 · 0 评论 -
JS中的bind的实现以及使用
在讨论bind()方法之前我们先来看一道题目:var altwrite = document.write;altwrite("hello");//报错,因为altwrite方法是在window上进行调用的,而window上是没有该方法的//1.以上代码有什么问题//2.正确操作是怎样的//3.bind()方法怎么实现对于上面这道题目,答案并不是太难,主要考点就是this指向的问题原创 2017-08-18 09:44:08 · 304 阅读 · 0 评论 -
JS中的异步以及事件轮询机制
一、JS为何是单线程的? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。(在JAVA和c#中的异步均是通过多线程实现的,没有循环队列一说,直接在子线程中完成相关的操作) JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动原创 2017-08-18 09:44:03 · 7050 阅读 · 0 评论 -
JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘
一、属性的归属问题JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响。对于所有实例共用的方法可直接定义在原型链上这样实例化的的时候就不用对每个实例定义该属性方法,所有的实例均具有该方的引用见最后的输出。function Myclass(){this.x=" x in Myclass";this.get=f原创 2017-08-18 09:43:58 · 324 阅读 · 0 评论 -
onchange、oninput、onpropertyChange事件的异同
onchange事件适用于input\textarea\select元素上,支持各大浏览器,该事件只有在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效;oninput事件适用于input\textarea\select元素,支持出IE外各大浏览器,该事件只有在键盘或者鼠标操作改变对象属性,只要属性发生变化就会触发事件,无需失去焦点。脚本触发无效;onpropertychange属原创 2017-08-18 09:43:53 · 229 阅读 · 0 评论 -
正则表达式中的exec和match方法的区别
正则表达式中的exec和match方法的区别字符串的正则方法有:match()、replace()、search()、split()正则对象的方法有:exec()、test()1.matchmatch方法属于String正则表达方法. 语法: str.match(regexp)str:要进行匹配的字符串. regexp:一个正则表达式(或者由RegExp()构造成的正则表达式)mat原创 2017-08-18 09:43:47 · 401 阅读 · 0 评论 -
JS中的常量(基本数据类型)和内置对象
JS中的基本数据类型:String 、number、null、boolean、undefined、symbol(ES6)object是复杂数据类型但是JS中的数据类型主要就是以上几种1、 利用typeof运算符时其中只有null是异常的,typeof(null)=object,所以在判断变量类型是否为null时要注意。同时利用typeof时对于没有声明的变量是不会报错的,返回值为unde原创 2017-08-18 09:43:42 · 659 阅读 · 0 评论 -
subString(), subStr(),splice(),split()的区别
1.slice();Array和String对象都有在Array中 slice(i,[j])i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个元素j为结束的索引值,缺省时则获取从i到末尾的所有元素参数返回:返回索引值从i到j的数组,原数组不改变在String中 slice(i,[j])参数说明:i为开始截取的索引值,负数代表从末尾算起的索引值,-1为倒数第一个字原创 2017-08-18 09:43:21 · 277 阅读 · 0 评论 -
深度解析正则表达式exec和match两者使用的异同以及要注意的地方
1.matchmatch方法属于String正则表达方法. 语法: str.match(regexp)str:要进行匹配的字符串. regexp:一个正则表达式(或者由RegExp()构造成的正则表达式)match的用法主要区分就是,正则表达式是否有全局标示g.(1)如果有g全局标志,那么返回的数组保存的是,所有匹配的内容,不包过子匹配。(2))如果没有g全局标志,那么返回原创 2017-08-18 09:43:06 · 337 阅读 · 0 评论 -
JS脚本文件的位置对页面加载性能影响以及无阻塞脚本(javascript)模式
JS的阻塞特性:当出现的时候,页面必须等待脚本文件的加载、解析、执行完毕后才能继续进行页面的渲染。不管脚本文件是以内联形式还是外部引入的形式出现在中,页面的加载和渲染都必须停下来等待脚本文件的执行完成。因为在脚本文件中可能会修改页面的内容。这就会出现一个问题,当HTML文件中引入很多的外部脚本文件和内联脚本时,可能会导致页面的严重阻塞,影响页面的加载和渲染,用户体验特别的差。因而需要寻找适当的方法原创 2017-08-18 09:42:56 · 468 阅读 · 0 评论 -
【学习笔记】你不得不知道的跨域小知识
什么是跨域?跨域一词从字面意思看,就是跨域名嘛,但实际上跨域的范围绝对不止那么狭隘。具体概念如下:只要协议、域名、端口有任何一个不同,都被当作是不同的域。之所以会产生跨域这个问题呢,其实也很容易想明白,要是随便引用外部文件,不同标签下的页面引用类似的彼此的文件,浏览器很容易懵逼的,安全也得不到保障了就。什么事,都是安全第一嘛。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。原创 2017-09-03 10:46:43 · 434 阅读 · 0 评论