js
文章平均质量分 68
js
AAA非专业划水人士小张
这个作者很懒,什么都没留下…
展开
-
JavaScript Ajax
如果要让用户留在当前页面中,同时发出新的HTTP请求,就必须用JavaScript发送这个新请求,接收到数据后,再用JavaScript更新页面,这样一来,用户就感觉自己仍然停留在当前页面,但是数据却可以不断地更新。如果仔细观察一个Form的提交,你就会发现,一旦用户点击“Submit”按钮,表单开始提交,浏览器就会刷新页面,然后在新页面里告诉你操作是成功了还是失败了。用JavaScript写一个完整的AJAX代码并不复杂,但是需要注意:AJAX请求是异步执行的,也就是说,要通过回调函数获得响应。原创 2024-04-17 13:42:53 · 260 阅读 · 0 评论 -
JavaScript 操作文件
在JavaScript中,浏览器的JavaScript执行引擎在执行JavaScript代码时,总是以单线程模式执行,也就是说,任何时候,JavaScript代码都不可能同时有多于1个线程在执行。由于JavaScript对用户上传的文件操作非常有限,尤其是无法读取文件内容,使得很多需要操作文件的网页不得不用Flash这样的第三方插件来实现。随着HTML5的普及,新增的File API允许JavaScript读取文件内容,获得更多的文件信息。下面的例子演示了如何读取用户选取的图片文件,并在一个。原创 2024-04-05 02:58:06 · 364 阅读 · 0 评论 -
JavaScript操作表单
注意要return true来告诉浏览器继续提交,如果return false,浏览器将不会继续提交form,这种情况通常对应用户输入有误,提示用户错误信息后终止提交form。例如,很多登录表单希望用户输入用户名和口令,但是,安全考虑,提交表单时不传输明文口令,而是口令的MD5。不过表单的输入框、下拉框等可以接收用户输入,所以用JavaScript来操作表单,可以获得用户输入的内容,或者对一个输入框设置新的内容。隐藏文本,对应的,用户不可见,但表单提交时会把隐藏文本发送到服务器。// ‘用户输入的值’原创 2024-04-05 01:21:17 · 248 阅读 · 0 评论 -
JavaScript 操作DOM
严格地讲,我们这里的DOM节点是指Element,但是DOM节点实际上是Node,在HTML中,Node包括Element、Comment、CDATA_SECTION等很多种,以及根节点Document类型,但是,绝大多数时候我们只关心Element,也就是实际控制页面结构的Node,其他类型的Node忽略即可。一个是使用appendChild,把一个子节点添加到父节点的最后一个子节点。当你遍历一个父节点的子节点并进行删除操作时,要注意,children属性是一个只读属性,并且它在子节点变化时会实时更新。原创 2024-04-05 01:02:39 · 331 阅读 · 0 评论 -
JavaScript 浏览器对象
此后,浏览器访问该网站时,会在请求头附上这个Cookie,服务器根据Cookie即可区分出用户。history对象保存了浏览器的历史记录,JavaScript可以调用history对象的back()或forward (),相当于用户点击了浏览器的“后退”或“前进”按钮。如果引入的第三方的JavaScript中存在恶意代码,则www.foo.com网站将直接获取到www.example.com网站的用户登录信息。Cookie还可以存储网站的一些设置,例如,页面显示的语言等等。原创 2024-04-05 00:58:44 · 324 阅读 · 0 评论 -
JavaScript class继承
子类的构造函数可能会与父类不太相同,例如,PrimaryStudent需要name和grade两个参数,并且需要通过super(name)来调用父类的构造函数,否则父类的name属性无法正常初始化。class的定义包含了构造函数constructor和定义在原型对象上的函数hello()(注意没有function关键字),这样就避免了Student.prototype.hello = function () {…// 记得用super调用父类的构造方法!最后,创建一个Student对象。原创 2024-04-04 18:33:20 · 258 阅读 · 0 评论 -
JavaScript 原型继承
prototype是原型才有的属性,__proto__对象跟原型都有,__proto__里面存的是Parent的constructor。2、让Prarent中的this指向Child,并执行Parent的函数体(classconstructor,Parent本身)4、给Child赋值,Parent的返回值类型是个值child就是个值,是个对象,child就是这个对象。3、设置原型链,将Child的__proto__的成员指向了Prarent的prototype的成员。通过对原型的理解,我们很容易解答。原创 2024-04-04 18:29:00 · 120 阅读 · 0 评论 -
JavaScript 创建对象
当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype对象,最后,如果还没有找到,就只能返回undefined。但是,如果写了new,它就变成了一个构造函数,它绑定的this指向新创建的对象,并默认返回this,也就是说,不需要在最后写return this;如果创建的对象有很多属性,我们只需要传递需要的某些属性,剩下的属性可以用默认值。// 默认值为’匿名’原创 2024-04-04 18:26:24 · 368 阅读 · 0 评论 -
JavaScript 面向对象编程
实例:实例是根据类创建的对象,例如,根据Student类可以创建出xiaoming、xiaohong、xiaojun等多个实例,每个实例表示一个具体的学生,他们全都属于Student类型。JavaScript的原型链和Java的Class区别就在,它没有“Class”的概念,所有对象都是实例,所谓继承关系不过是把一个对象的原型指向另一个对象而已。类:类是对象的类型模板,例如,定义Student类来表示学生,类本身是一种类型,Student表示学生类型,但不表示任何具体的某个学生;原创 2024-04-04 18:15:46 · 243 阅读 · 0 评论 -
JavaScript JSON
XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了。为了统一解析,JSON的字符串规定必须用双引号"“,Object的键也必须用双引号”"。JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。JSON实际上是JavaScript的一个子集。array:就是JavaScript的Array表示方式——[];string:就是JavaScript的string;以及上面的任意组合。原创 2024-04-04 18:08:18 · 197 阅读 · 0 评论 -
JavaScript RegExp
它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?[0-9a-zA-Z_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如’a100’,‘0_Z’,‘js2015’等等;原创 2024-04-04 18:03:43 · 541 阅读 · 0 评论 -
JavaScript Date
时间戳是一个自增的整数,它表示从1970年1月1日零时整的GMT时区开始的那一刻,到现在的毫秒数。假设浏览器所在电脑的时间是准确的,那么世界上无论哪个时区的电脑,它们此刻产生的时间戳数字都是一样的,所以,时间戳可以精确地表示一个时刻,并且与时区无关。// ‘2015/6/24 下午7:49:22’,本地时间(北京时区+8:00),显示的字符串与操作系统设定的格式有关。// ‘Wed, 24 Jun 2015 11:49:22 GMT’,UTC时间,与本地时间相差8小时。原创 2024-04-04 17:52:01 · 513 阅读 · 0 评论 -
JavaScript 标准对象
虽然包装对象看上去和原来的值一模一样,显示出来也是一模一样,但他们的类型已经变为object了!因为它是非空字符串!// 123,相当于parseInt()或parseFloat()不要使用new Number()、new Boolean()、new String()创建包装对象;用String()来转换任意类型到string,或者直接调用某个对象的toString()方法;用parseInt()或parseFloat()来转换任意类型到number;原创 2024-04-04 17:39:51 · 358 阅读 · 0 评论 -
JavaScript generator(生成器)
因为generator可以在执行过程中多次返回,所以它看上去就像一个可以记住执行状态的函数,利用这一点,写一个generator就可以实现需要用面向对象才能实现的功能。函数只能返回一次,所以必须返回一个Array。但是,如果换成generator,就可以一次返回一个数,不断返回多次。直接调用一个generator和调用函数不一样,fib(5)仅仅是创建了一个generator对象,还没有去执行它。当执行到done为true时,这个generator对象就已经全部执行完毕,不要再继续调用next()了。原创 2024-04-04 17:29:51 · 289 阅读 · 0 评论 -
JavaScript 标签函数
标签函数sql()实际上是一个普通函数,我们在内部把strings拼接成一个SQL字符串,把…第一个参数strings是一个字符串数组,它是[“SELECT * FROM users WHERE email=”, " AND password=", “”],即除去${xxx}剩下的字符组成的数组;模板字符串前面以sql开头,实际上这是一个标签函数,上述语法会自动转换为对sql()函数的调用。exps是一个可变参数,它接收的也是一个数组,但数组的内容是由模板字符串里所有的。// 执行数据库更新。原创 2024-04-04 15:14:32 · 760 阅读 · 0 评论 -
JavaScript 箭头函数
箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种像上面的,只包含一个表达式,连{ …var fn = () => new Date().getFullYear() - this.birth;// this指向obj对象。箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。// this.birth仍是1990。因为和函数体的{ …原创 2024-04-04 15:05:31 · 207 阅读 · 0 评论 -
JavaScript 闭包
在这个例子中,我们在函数lazy_sum中又定义了函数sum,并且,内部函数sum可以引用外部函数lazy_sum的参数和局部变量,当lazy_sum返回函数sum时,相关参数和变量都保存在返回的函数中,这种称为“闭包(Closure)”可以不返回求和的结果,而是返回求和的函数!当我们调用lazy_sum()时,每次调用都会返回一个新的函数,即使传入相同的参数。高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。返回函数不要引用任何循环变量,或者后续会发生变化的变量。原创 2024-04-04 14:55:41 · 164 阅读 · 0 评论 -
JavaScript 高阶函数
通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。由于map()方法定义在JavaScript的Array中,我们调用Array的map()方法,传入我们自己的函数,就得到了一个新的Array作为结果。findIndex()和find()类似,也是查找符合条件的第一个元素,不同之处在于findIndex()会返回这个元素的索引,如果没有找到,返回-1。原创 2024-04-04 14:45:03 · 364 阅读 · 0 评论 -
JavaScript 方法
原因是this指针只在age方法的函数内指向xiaoming,在函数内部定义的函数,this又指向undefined了!要指定函数的this指向哪个对象,可以用函数本身的apply方法,它接收两个参数,第一个参数就是需要绑定的this变量,第二个参数是Array,表示函数本身的参数。如果以对象的方法形式调用,比如xiaoming.age(),该函数的this指向被调用的对象,也就是xiaoming,这是符合我们预期的。JavaScript的所有对象都是动态的,即使内置的函数,我们也可以重新指向新的函数。原创 2024-04-04 14:04:28 · 508 阅读 · 0 评论 -
JavaScript变量作用域与解构赋值
使用解构赋值对对象属性进行赋值时,如果对应的属性不存在,变量将被赋值为undefined,这和引用一个不存在的属性获得undefined是一致的。全局变量会绑定到window上,不同的JavaScript文件如果使用了相同的全局变量,或者定义了相同名字的顶层函数,都会造成命名冲突,并且很难被发现。由于JavaScript的变量作用域实际上是函数内部,我们在for循环等语句块中是无法定义具有局部作用域的变量的。由于JavaScript的函数可以嵌套,此时,内部函数可以访问外部函数定义的变量,反过来则不行。原创 2024-04-04 12:32:34 · 575 阅读 · 0 评论 -
JavaScript 函数定义和调用
请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。标识,从运行结果可知,传入的参数先绑定a、b,多余的参数以数组形式交给变量rest,所以,不再需要arguments我们就获取了全部参数。}是一个匿名函数,它没有函数名。由于JavaScript的函数也是一个对象,上述定义的abs()函数实际上是一个函数对象,而函数名abs可以视为指向该函数的变量。如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined)。原创 2024-04-04 01:31:58 · 414 阅读 · 0 评论 -
JavaScript iterable
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型。in循环遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。更好的方式是直接使用iterable内置的forEach方法,它接收一个函数,每次迭代就自动回调该函数。当给Array对象添加了额外的属性后,for …for (var x of a) { // 遍历Array。原创 2024-04-04 00:45:26 · 264 阅读 · 0 评论 -
JavaScript map和set
JavaScript的默认对象表示方式{}可以视为其他语言中的Map或Dictionary的数据结构,即一组键值对。如果用Map实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,Array越长,耗时越长。由于key不能重复,所以,在Set中,没有重复的key。// Set {1, 2, 3, “3”} 注意数字3和字符串’3’是不同的元素。原创 2024-04-04 00:20:52 · 255 阅读 · 0 评论 -
JavaScript循环
由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for …while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。for循环在已知循环的初始和结束条件时非常有用。for循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环。} while()循环要小心,循环体会至少执行1次,而for和while循环则可能一次都不执行。在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出。原创 2024-04-04 00:04:13 · 406 阅读 · 0 评论 -
JavaScript数组
/ arr变为[‘A’, ‘B’, ‘C’, undefined, undefined, undefined]// arr变为[‘A’, ‘B’, ‘C’, undefined, undefined, ‘x’]arr.slice(0, 3);// 从索引0开始,到索引3结束,但不包括索引3: [‘A’, ‘B’, ‘C’]arr.shift();// 从索引3开始到结束: [‘D’, ‘E’, ‘F’, ‘G’]原创 2024-04-03 19:41:22 · 1619 阅读 · 0 评论 -
JavaScript字符串
JavaScript的字符串就是用’ ‘或" “括起来的字符表示。如果’本身也是一个字符,那就可以用”"括起来,比如"I’m OK"包含的字符是I,’,m,空格,O,K这6个字符。如果字符串内部既包含’又包含" 可以用转义字符\来标识,比如:‘I’m “OK”!表示的字符串内容是:I’m “OK”!转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\表示的字符就是\。ASCII字符可以以\x##形式的十六进制表示,例如:‘\x41’;// 完全等同于 ‘A’原创 2024-04-03 19:20:33 · 470 阅读 · 0 评论 -
JavaScript数据类型和变量
JavaScript不区分整数和浮点数,统一用Number表示,以下都是合法的Number类型:123;// 整数1230.456;// 浮点数0.4561.2345e3;// 科学计数法表示1.2345x1000,等同于1234.5-99;// 负数NaN;// NaN表示Not a Number,当无法计算结果时用NaN表示Infinity;// Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity。原创 2024-04-03 18:18:56 · 884 阅读 · 0 评论 -
JavaScript语法
JavaScript的语法和Java语言类似,每个语句以;但是,JavaScript并不强制要求在每个语句的结尾加;,浏览器中负责执行JavaScript代码的引擎会自动在每个语句的结尾补上;缩进不是JavaScript语法要求必须的,但缩进有助于我们理解代码的层次,所以编写代码时要遵守缩进规则。一行代码包含两个语句,每个语句用;var y = 2;语句块是一组语句的集合,例如,下面的代码先做了一个判断,如果判断成立,将执行{…一行代码是一个字符串,可以视为一个完整的语句:‘Hello, world’;原创 2024-04-02 17:53:07 · 190 阅读 · 0 评论 -
JavaScript
注意:不可以用Word或写字板来编写JavaScript或HTML,因为带格式的文本保存后不是纯文本文件,无法被浏览器正常读取。JavaScript代码可以直接嵌在网页的任何地方,把JavaScript代码放到中:由包含的代码就是JavaScript代码,它将直接被浏览器执行。JavaScript是一种运行在浏览器中的解释型的编程语言。可以用任何文本编辑器来编写JavaScript代码。Sublime Text是一个好用的文本编辑器,免费,但不注册会不定时弹出提示框。,浏览器按照顺序依次执行。原创 2024-04-02 17:43:03 · 520 阅读 · 0 评论