js

JS闭包

六月ゝ 毕业季﹏ 提交于 2020-02-26 08:00:37
JS闭包 了解什么是闭包 先来一段代码,根据代码分析能更容易理解: function a ( ) { var num = '我是函数a的变量num' ; return function b ( ) { console . log ( num ) ; } } var res = a ( ) ; res ( ) ; 从函数a上看 :有一个函数a,在函数a的内部,返回了一个函数b,而函数是一个复杂数据类型,即在一个函数内部,返回了一个复杂数据类型。 从函数b上看 :函数b中,访问着函数a的里面的变量(数据),也就是在一个被返回的函数里,有一个外部作用域的变量。 从函数a外部看 :有一个变量res,引用了函数a,但是由于函数a内部存在有一个返回值函数b,则,这个变量,相当于在引用了函数b(调用函数a,执行结果就是函数b)。 代码上的分析: function a ( ) { //这个 num 变量就是函数 a 的变量 var num = '我是函数a的变量num' ; return function b ( ) { //这里在后台输出的num,是函数a的变量 console . log ( num ) ; } } //res 所接收到的是 a 函数执行以后的返回值 //而这个返回值就是函数 a 内部返回的一个复杂数据类型(函数b) //这个时候,触发了一个不会销毁的函数空间 /

js正则

守給你的承諾、 提交于 2020-02-26 07:27:43
js正则 首先我们要了解什么是正则表达式? 正则表达式是构成搜索模式(search pattern)的字符序列。 当您搜索文本中的数据时,您可使用搜索模式来描述您搜索的内容。 正则表达式可以是单字符,或者更复杂的模式。 正则表达式可用于执行所有类型的文本搜索和文本替换操作。 创建一个正则 1、通过new创建正则 var num = new RegExp("hello", "ig"); 2、省略new创建正则 var num = RegExp("hello", "ig"); 3、正则常量赋值 var eg = /hello/ig; 正则可以传入两个参数: 1、正则主体部分,一般情况下就是字符串 2、 修饰符 (没有先后顺序) i 忽略大小写 g 全局匹配 m 换行匹配 正则表达式的常用方法 1.test 语法:正则.test(字符串); 功能:在字符串中匹配正则是否存在 返回值:如果存在返回true 如果不存在就返回false var str = "how aRe you"; var num = /are/i; //匹配are忽略大小写 alert(num.test(str)); //返回true 2.exec 格式:正则.exec(字符串) 功能:在字符串中匹配正则是否存在 返回值:如果存在返回一个数组,数组里面存放着匹配的内容.如果不存在,返回null alert(num

js和ajax实现数据验证并登录

最后都变了- 提交于 2020-02-26 07:24:21
js部分 < script type = "text/javascript" > $ ( ) . ready ( function ( ) { $ ( '#Login' ) . click ( function ( ) { if ( $ ( '#username' ) . val ( ) == "" || $ ( '#password' ) . val ( ) == "" ) { alert ( "用户名或密码不能为空!" ) ; } else { $ . ajax ( { type : "POST" , url : "Logincheck.ashx" , data : "userid=" + escape ( $ ( '#userid' ) . val ( ) ) + "&password=" + escape ( $ ( '#password' ) . val ( ) ) , success : function ( msg ) { if ( msg == "success" ) { parent . document . location . href = "index.aspx" ; //如果登录成功则跳到管理界面 } if ( msg == "fail" ) { alert ( "密码错误!" ) ; } } , error : function (

js观察者模式发布/订阅

跟風遠走 提交于 2020-02-26 07:18:57
实习期结束,最近回到学校开始学习node.js,node果然是强大。不过在涉及到文件操作的时候,发现要大量使用异步回掉操作。 以前在写页面的时候,从没这么多异步操作,只有在使用'setInterval'和'XMLHttpRequest'时了解了一下异步编程。这次在学习node的过程中,把异步回掉算是弄清楚了。但是在编码书写代码的时候,陷入了回调金字塔(callback hell)。使用es6Promise解决了一些问题。也看到了EventProxy模块基于事件驱动的解决方案。 在使用EventProxy的过程中,有种似曾相识的感觉。有点像观察者模式发布/订阅。首先使用数组缓存订阅者订阅的消息,当订阅者订阅消息的时候,把订阅的消息push到指定消息的队列中,当发布者发布消息的时候,我们遍历执行push到指定消息队列中的回调事件。 而订阅者不需要关心发布者什么时候发布消息。 而发布者不需要关心订阅者订阅的状态。 var observer = new Observe(); var callback = function(num) { console.log("event:"+num); // 输出event:2 }; // 订阅消息 observer.listen("event1", callback); observer.listen("event2", callback); //

用js徒手写一个中间键

天大地大妈咪最大 提交于 2020-02-26 06:22:29
什么是中间键? 下图中 C和D 的部分就是中间键 创建一个js文件 middleware.js 内容如下 const App = () => { const req = { type: 'request', params: [] } const res = { type: 'response' } const middlewares = [] const use = fn => middlewares.push(fn) const runMiddlewares = index => { const count = middlewares.length if (index < count) middlewares[index].apply(null, [req, res, () => runMiddlewares(index + 1)]) } const get = (path, fn) => { runMiddlewares(0) fn.apply(null, [res, res]) } return { get, use } } const app = App() app.use((req, res, next) => { req.params.id = 5; console.log(req, 'request object accessed from middleware 1'

jQuery入门简述

余生长醉 提交于 2020-02-26 04:58:31
jQuery 是一套快速的,简洁的 javaScript 脚本库,jQuery 由美国人 John Resig 创建,至今已吸引了来自世界各地的众多 javaScript 高手加入其组织,使用户能更方便地处理 HTML documents、events、实现动画效果, jQuery 还提供了大量插件,并且方便地为网站提供 AJAX 交互,jQuery 能够使用户的 HTML 页保持代码和 HTML 内容分离,也就是说,不用再在 HTML 里面插入一堆 JS 来调用命令了,只需定义 id 即可,它是轻量级的 JS 库(压缩后只有 80+k) ,这是其它的 JS 库所不及的,它兼容 CSS3,还兼容各种浏览器 (IE 6.0+,FF 1.5+,Safari 2.0+,Opera 9.0+) 目前网络上有大量开源的 JS 框架,jQuery 是继 prototype 之后又一个优秀的 JavaScript 框架,jQuery 是目前最流行的 JS 框架,其宗旨是——WRITE LESS,DO MORE,写更少的代码,做更多的事情,很多大公司都在使用 jQuery jQuery 安装: 从官网 http://www.jquery.com 下载 jQuery 库,并导入到 JS 文件就可以使用了 jQuery 使用: jQuery 语法是通过选取 HTML 元素,并对选取的元素进行操作

js图片自适应大小

微笑、不失礼 提交于 2020-02-26 03:45:57
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>最新javascript自动按比例显示图片,按比例压缩图片显示</title> <script type="text/javascript"> function AutoResizeImage(maxWidth,maxHeight,objImg){ var img = new Image (); img. src = objImg. src ; var hRatio; var wRatio; var Ratio = 1; var w = img. width ; var h = img. height ; wRatio = maxWidth / w; hRatio = maxHeight / h; if (maxWidth ==0 && maxHeight==0){ Ratio = 1;

用js徒手写一个路由框架

北慕城南 提交于 2020-02-26 03:27:32
分别创建 index.html 、 main.js 、router.js 和 route.js文件 route.js export class Route { constructor(name, path, handler) { this.name = name; this.path = path; this.handler = handler; } get name() { return this._name; } set name(name) { this._name = name; } get path() { return this._path; } set path(path) { this._path = path; } get handler() { return this._handler; } set handler(handler) { this._handler = handler; } } router.js import { Route } from './route.js' export class Router { constructor() { this.mode = 'history' this.routes = [] this.root = '/' } get root() { return this._root; } set root(val)

js中的this的指向问题

社会主义新天地 提交于 2020-02-26 03:12:36
任何一门语言中,相信this的指向问题都是一个重点,js也不例外。 js中的作用域分为全局作用域和局部作用域,在全局作用域中,this指向的是他的全局对象window,如下 在全局中打印 this :console . log ( this ) ; 输出:Window { parent : Window , opener : null , top : Window , length : 2 , frames : Window , … } 下面看一下this在局部作用域(函数)中的指向 在函数中,this的指向大致分为四种: 一、在普通函数中this指向window: var name = "张三" ; function f ( ) { var name = "李四" ; console . log ( this . name ) ; } f ( ) ; 输出:张三 匿名函数的this也指向的是window ar setname = "张三" ; function f ( ) { ( function ( ) { var setname = "小王" ; console . log ( this , this . setname ) ; } ) ( ) ; } f ( ) ; 输出:Window { postMessage : ƒ , blur : ƒ , focus : ƒ ,

什么是js-xiaoxu

大憨熊 提交于 2020-02-26 02:50:08
JavaScript基础语法 HTML :标记语言 JavaScript :编程语言 序言 JavaScript发展历史(JS) JavaScript是什么 JavaScript能干什么 1994年,网景公司(Netscape)发布了Navigator浏览器0.9版,这是世界上第一款比较成熟的网络浏览器,轰动一 时。但是这是一款名副其实的浏览器–只能浏览页面,浏览器无法与用户互动,当时解决这个问题有两个办法,一个是采 用现有的语言,许它们直接嵌入网页。另一个是发明一种全新的语言。 liveScript ==> javaScript ==> ECMAscript 2. 1995年Sun公司将Oak语言改名为Java,正式向市场推出。Sun公司大肆宣传,许诺这种语言可以"一次编写,到处运 行"(Write Once, Run Anywhere),它看上去很可能成为未来的主宰。 3. 网景公司动了心,决定与Sun公司结成联盟 4. 34岁的系统程序员Brendan Eich登场了。1995年4月,网景公司录用了他,他只用10天时间就把Javascript设计出 来了。(多肽语言) 5. (1)借鉴C语言的基本语法; (2)借鉴Java语言的数据类型和内存管理; (3)借鉴Scheme语言,将函数提升到"第一等 公民"(first class)的地位; (4)借鉴Self语言,使用基于原型