
javascript
文章平均质量分 65
Mccree1997
前端收废品区
展开
-
Javascript中的数组去重问题
在论坛上看到了有关于数组去重的问题,思考了一下相出了第一种方法var arr=[1,2,3,4,5,1,2,3,4,6,7];var newArr=[];for(var i=0;i<arr.length;i++){//通过indexof方法检索arr中的值,indexof方法在不到相同的值时会返回-1 if(newArr.indexof(arr[i])==-1){ ne原创 2017-08-21 20:48:19 · 485 阅读 · 0 评论 -
面向对象的程序设计(1)
面向对象的语言标志,就是他有一个类的概念,通过类可以创建多个具有相同属性的方法和对象。但是ECMAscript并没有类的概念,所以它的对象也与其他语言中的对象有所不同ECMA把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数” 它基于引用类型,由引用类型创建出来。创建对象可以通过new一个Object的实例出来,然后给他添加属性和方法 var obj=new Object()原创 2017-11-28 13:15:18 · 258 阅读 · 0 评论 -
DOM笔记(2)
创建文本节点我们可以用createElement创建新的元素,那我们要如何创建Text类型的节点呢,DOM提供给了我们createTextNode() 方法方便我们创建文本节点。这个方法接收一个参数(要创建的文本)var text=document.createTextNode("hello,world");document.body.appendChild(text)//页面被写入hello,w原创 2017-12-15 22:33:41 · 205 阅读 · 0 评论 -
BOM的学习(2)
间歇与超时调用我们知道,Javascript是单线程语言,但它允许通过设置超时值和间歇值来调度代码在特定的时刻执行。超时调用是在指定的时间后执行代码,而后者则是每隔指定时间就调用一次代码。 超时调用需要使用window对象的setTimeout()方法,这个方法接收两个参数:要执行的代码和以毫秒表示的时间。其中,第一个参数可以是一个包含javascript代码的字符串,也可以是一个函数。第二个参数原创 2017-12-07 16:06:39 · 239 阅读 · 0 评论 -
继承(1)
ECMAscript中继承只支持实现继承,主要是依靠原型链继承来实现的,其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例呢都包含一个指向原型的内部指针。 ECMAscript中的继承就是让一个原型对象等于另一个类型的实例,此时原型对象将包含一个指向另一个原型的指针,相应的,另一个原型也包含一个指向另一个构造函原创 2017-12-03 11:19:09 · 248 阅读 · 0 评论 -
DOM学习笔记(3)
HTMLDocument的变化HTML5扩展了HTMLDocument,增加了新的功能,与DOM扩展类似,这些变化同样基于哪些已经得到很多浏览器完美支持的专有扩展。所以尽管这些扩展被写入标准的时间相对不长,但很多浏览器很早已经支持这些功能了。readyState属性Document的readyState属性有loading和complete 这两个值,使用它最恰当的方法就是通过它来实现一个指示文档原创 2017-12-17 08:55:14 · 347 阅读 · 0 评论 -
元素大小
offset dimension元素的可见大小由高度和宽度决定,包括所有的内边距、滚动条和边框大小但是不包括外边框。通过下列几个元素可以取得元素的偏移量offsetHeight:元素在垂直方向上占用的空间大小,以像素计。包括元素高度、水平滚动条的高度、上边框高度和下边框高度。offsetWidth:元素在水平方向占用的空间大小,以像素计。包括元素的高度、垂直滚动条的的宽度、左边框和右边框的宽度原创 2017-12-17 13:32:13 · 499 阅读 · 0 评论 -
JSON的学习
JSON的语法可以表示以下三种类型的值简单值:与Javascript中相同的语法,可以在JSON中表示字符串、数值、布尔值和Null。对象:对象作为一种复杂性数据类型,表示的时一组无序的键值对儿。而每对键值的值可以时简单值也可以是复杂数据类型值(对象或数组)数组:数组是一种复杂类型值,表示一组有序的值的列表,可以通过数值索引来访问其中的值,值可以是任何类型的值简单值最简单的JSON数据形式就原创 2017-12-26 10:51:19 · 242 阅读 · 0 评论 -
跨浏览器的事件处理程序
我们第一个要创建的方法是addHandler() 它的职责是视情况分别使用DOM0级方法、DOM2级方法或者IE方法来添加事件。这个方法属于一个名叫EventUtil的对象。addHandler() 方法接收三个参数:要操作的元素、事件名称、事件处理程序函数。addHandler() 对应的方法是removeHandler,他也接收相同的参数。这个方法的职责是移除之前添加的事件处理程序—-无论事件处原创 2017-12-18 22:33:23 · 252 阅读 · 0 评论 -
事件类型
DOM3级事件规定了下列几类事件UI事件:当用户与页面上的元素交互时触发焦点事件:当用户获得或失去焦点时触发鼠标事件:当用户通过鼠标在页面上执行操作时触发文本事件:当在文档中输入文本时触发键盘事件,当用户通过键盘在页面上执行操作时触发合成事件:当为IME输入字符时触发变动事件:当DOM结构发生变化时触发UI事件UI事件 指的是那些不一定与用户操作有关的事件。比如Javascript中原创 2017-12-19 15:50:19 · 257 阅读 · 0 评论 -
事件
时间就是文档和浏览器窗口中发生的一些特定交互瞬间。可以使用侦听器来预定事件,以便事件发生时执行相应的代码。当我们在网页中点击一个按钮,我们点击的是什么?一个按钮?不是的,我们点击的是一个按钮,也点击了按钮的容器元素。事件流描述的是从页面中接收事件的顺序。在IE中,事件流是事件冒泡,而在Netscape中事件流则是事件捕获。事件冒泡 即事件开始时由最具体的元素接收,然后逐级向上传播到不为具体的节点。<原创 2017-12-17 22:11:55 · 218 阅读 · 0 评论 -
事件委托
我们有1000个节点要添加click事件,这个时候我们怎么办?对于事件处理程序过多问题的解决方案就是事件委托。事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。 <ul> <li>A</li> <li>B</li> <li>C</li> <li>D</li> </ul>//js代码var u原创 2017-12-19 17:04:32 · 203 阅读 · 0 评论 -
JQuery的学习(3)
JQuery的DOM操作append() 在每个匹配项的末尾插入参数项目,(是插入其中);appendTo() 将选择到的元素插入到参数末尾,(插入其中);before() 在匹配的元素前插入参数,(外部插入);after() 在匹配的元素后插入参数,(外部插入);clone() 创建一个元素的深拷贝复制;detach() 删除所有匹配的元素empty() 删除所有匹配元素的子节点h原创 2018-01-14 09:51:37 · 228 阅读 · 0 评论 -
AJAX的学习
HTTP头部信息每个HTTP请求和响应都会带有相应的头部信息, 其中有的对开发人员有用,有的也没什么用。XHR对象也提供了操作这两种头部(响应头部和请求头部)信息的方法Accept:浏览器能够处理的内容类型Accept-Charset:浏览能够显示的字符集Accept-Encoding:浏览器能够处理的压缩编码Accept-Language:浏览器当前的语言设置Conection:浏览器与原创 2017-12-27 17:07:01 · 234 阅读 · 0 评论 -
Jquery的学习
Jquery选择器Jquery的选择器 类似与CSS的选择器 <div>div1</div> <div>div2</div> <p>jack</p> <ul> <li>1</li> <li>2</li> <li id="third">3</li> <li>4</li> </ul> //Jque原创 2018-01-08 11:20:44 · 222 阅读 · 0 评论 -
Jquery的学习(2)
JQuery的CSS相关.height() 得到元素高度或者设置元素高度.innerHeight() 得到元素的高度,包括padding,但是不包括border.innerWidth() 得到元素的宽度,包括padding,但是不包括border.offset() 得到元素相对于文档中的坐标,用left和top表示,outerwidth()和outerHeight() 可以得到元素的宽高,原创 2018-01-10 19:23:53 · 207 阅读 · 0 评论 -
Cache Manifest离线缓存
manifest是一个后缀名.manifest的文件,在文件中定义那些需要缓存的文件,支持manifest的浏览器会将按照manifest的规则,像文件一样保存在本地,从而在没有网络连接的情况下,也能访问页面。首先,这个是基于一个appcache的缓存机制,当我们正确配置appcache后,我们如果再次访问该应用的时候,浏览器会首先检查manifest文件是否有变动,如果有变动就会把形影的改变更新下原创 2018-02-06 21:19:47 · 2030 阅读 · 0 评论 -
BOM的学习(1)
Browser Object Model(浏览器对象模型) 他的核心对象是window,他表示浏览器的一个实例。即是Javascript访问浏览器窗口的一个借口,又是ES中的Global对象。由于window对象同时扮演着ECMAscript中的Global对象的角色,因此所有在全局作用域中声明的变量、函数都会变成window对象的属性和方法。var age=26;function sayAge原创 2017-12-06 22:33:17 · 243 阅读 · 0 评论 -
DOM学习笔记(1)
DOM(文档对象模型)是针对HTML和XML文档的一个API。DOM描绘了一个层次化的节点树,允许开发人员添加移除修改页面的一部分。节点层次DOM可以将任何HTML和XML文档描绘成一个由多层节点构成的结构。节点分为几种不同的类型,每种类型分别表示文档中不同的信息或标记。每个节点拥有各自的特点、数据和方法。节点之间的关系构成了层次,而所有页面标记则表现为一个以特定借点为根节点的树形结构。<html>原创 2017-12-14 16:59:43 · 246 阅读 · 0 评论 -
函数表达式(2)
闭包中的this对象我们知道this对象是运行时基于函数的执行环境绑定的,在全局环境中,this就等于window,而当函数作为某个对象的方法调用时,this等于这个对象。不过,当我们在闭包中使用this就会导致一些问题,因为匿名函数的执行环境具有全局性,因此this对象通常指向window。但是有时候由于编写闭包的方式不同,这一点也就不明显//匿名函数的全局性var name="The wind原创 2017-12-05 14:33:15 · 203 阅读 · 0 评论 -
学习for in循环
for in循环可以将一个对象的所有属性名遍历出来var Person={ name:"BurNing", age:29, job:"Carry"}for(var key in Person){ alert(key);//name,age,job}//数组对象var arr=["1","2","3"];for(var index in arr){转载 2017-08-22 21:03:38 · 329 阅读 · 0 评论 -
数据类型的学习(1)
NaN,非数值 这个数值用于表示一个本来要返回的值的操作数返回数值的情况 NaN不等于本身针对NaN的这两个特点,定义了isNaN()函数,这个函数会尝试将这个值转换为数值。 例如: alert(isNaN(NaN)); 返回true alert(isNaN(10); 返回false alert(isNaN("10"); 返回false 同上都是10 alert(isNaN(blue原创 2017-09-05 15:45:29 · 257 阅读 · 0 评论 -
面向对象的程序设计(2)
工厂模式javascript中没有类这个概念,程序猿就发明了一种函数,用函数来封装以特定接口创建对象的细节 function createProperty(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayAll=f原创 2017-11-29 11:32:23 · 220 阅读 · 0 评论 -
变量、作用域与内存问题
ECMAScript中包含两种不同的数据类型的值:基本类型值和引用类型值基本类型值没有属性而引用类型的值可以有属性引用类型:var person =new Object();person.name="burning";console.log(person.name); //burning基础类型:var name="Burning";name.age=27;console.log(na原创 2017-11-19 10:40:32 · 277 阅读 · 0 评论 -
面向对象的程序设计(3)
原型语法 function Person(){ } Person.prototype={ name:"burning", age:24, job:"captain", sayJob:function(){ console.log(this.job); } } v原创 2017-11-29 17:39:08 · 215 阅读 · 0 评论 -
引用类型(数组)
Array创建数组的方法基本上有两种1、使用Array构造函数 var arr=new Array();var arr1=new Array(10);//创造了一个length为10的数组var arr2=new Array("a","b","c");//创造了一个长度为3的,内容为a,b,c三个字符串的数组2、使用字面量表示法var arr3=["a","b","c"]; //内容等同于arr2原创 2017-11-21 14:11:05 · 592 阅读 · 0 评论 -
引用类型(数组2)
数组的迭代与归并方法every()方法:对数组的每一项运行给定函数,如果函数的每一项都返回true,则返回truefilter()方法:对数组的每一项运行给定函数,返回该函数返回true的项组成的数组forEach()方法:对数组的每一项运行给定函数,但是没有返回值map()方法:对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组some()方法:对数组的每一项运行给定函数,要是原创 2017-11-21 16:13:42 · 253 阅读 · 0 评论 -
正则表达式相关
元字符“^”:这个会匹配行或者字符串的起始位置,有时还会匹配整个文档的起始位置。“$”:这个会匹配行或者字符串的结尾。“\b”:不会匹配两边的字符,他会识别是否为单词的边界。“\d”:匹配数字“\w”:匹配字母数字和下划线“\s”:匹配空格“.”:匹配除了换行以外的任何字符反义字符“\W”:匹配任意不是字母数字下划线的字符“\S”:匹配任意不是空白符的字符“\D”:匹配任何非数原创 2017-12-08 22:30:49 · 176 阅读 · 0 评论 -
客户端检测(1)
举例来说,IE5.0以前并不支持document.getElementById()这个DOM方法。尽管可以使用document.all属性来实现相同的目的,但是IE5.0以前并没有getElementById(),所以有下面这个例子function getElement(id){ if (document.getElementById){ return document.ge原创 2017-12-08 14:03:14 · 203 阅读 · 0 评论 -
RegExp类型
Javascript通过RegExp来支持正则表达式。var expression=/pattern/ flags;三个flags标志,可以有一个或多个g(global):表示全局模式,即模式将被用于所有字符串,而并非发现第一个匹配项时立即停止i:表示不区分大小写模式(case-insensitive),即在决定匹配项时忽略模式与字符串的大小写;m:表示多行模式,即在到达一行文本末尾时还会继续原创 2017-11-22 14:53:32 · 292 阅读 · 0 评论 -
Function类型(1)
函数我们有三种方式定义一个函数函数表达式函数声明构造函数函数通常是使用函数声明来定义的,定义如下function add(a,b){ console.log(a+b); } add(2,5);//7接着是函数表达式var sum=function(a,b){ return a+b;} alert(sum(2,4));//6Function构造原创 2017-11-22 17:15:42 · 328 阅读 · 0 评论 -
Function类型(2)
函数作为值的函数function calculate(func,arg1,arg2){ return func(arg1,arg2); } function add(num1,num2){ return num1+num2; } var result=calculate(add,44,56); alert(result);/1原创 2017-11-23 13:41:16 · 334 阅读 · 0 评论 -
表单脚本学习笔记(表单基础)
表单是由<form> 元素来表示的,而在Javascript中,表单对应的时HTMLFormElement类型的,继承自HTMLElement,保留了原有的属性,也有自己独特的属性和方法acceptCharset:服务器能够处理的字符集,等价域HTML的accept-charset特性action:接受请求中的URL;等价于HTML中的actionelements:表单中所有的控件集合。en原创 2017-12-20 13:33:35 · 239 阅读 · 0 评论 -
表单脚本学习(选择框脚本)
选择框是通过<select><option> 来实现的,为了方便与这个控件交互,除了所有表单字段共有的属性和方法外,HTMLSelectElement提供了我们多种属性和方法add():向空间中插入新<option> 元素 方法接收两个参数(newOption,relOption),其位置在relOption之前multiple:布尔值,表示是否允许多项选择options:该空间中optio原创 2017-12-20 14:59:08 · 287 阅读 · 0 评论 -
函数表达式(1)(含闭包)
定义函数的方法有两种,一种是函数声明,一种是函数表达式//函数声明function app(){ console.log("app");/app}//函数表达式var app=function(){ console.log("app");//app}他们两个不同的地方在于,函数声明会有一个提升(相当于会在执行代码前读取函数声明),而函数表达式不会有//函数声明 ap原创 2017-12-04 15:31:19 · 237 阅读 · 0 评论 -
Function属性和方法与基本包装类型(3)
函数的属性与方法函数也是对象,对象也有属性和方法。每个函数都有length和prototype,length是函数参数的个数,而prototype是保存他们所有实例方法的真正所在,toString()和valueOf()都保存在它的名下 m2 每个函数都包含两个非继承而来的方法apply()和call(),这两个方法的用途都是在特定的作用域中调用函数。//apply的运用function su原创 2017-11-24 22:23:00 · 275 阅读 · 0 评论 -
浅谈异步与同步
首先我们要理解什么是同步和异步同步:就是顺序执行的代码,调用这段代码我能直接获取到结果的就是同步异步:就是稍后执行的代码,调用这段代码我可能没办法立即获取执行结果,需要通过别的操作才可以得到结果但是JavaScript是以单线程的方式运行的,也就是同一时间只能进行一件事,试想一下,假如javascript是多线程的,如果线程1要删除一个DOM元素,节点2要让DOM元素运动起来并且显示,那么浏览器怎...原创 2018-05-15 11:09:09 · 410 阅读 · 0 评论