var函数

用js实现call方法

北慕城南 提交于 2019-12-14 11:13:00
Function.prototype.call2 = function (context, ...args) { var context = context || window; //改变this指向 context.__proto__.fn = this; //调用函数 var res = context.fn(...args); //删除多余属性 delete context.__proto__.fn; return res; } 来源: https://www.cnblogs.com/wangsai-666/p/12038230.html

ES6新特性

人盡茶涼 提交于 2019-12-14 09:36:07
ES6是什么? 实际上, 它是一种新的javascript规范。 下面就是一个简单的JavaScript发展时间轴: 1、1995:JavaScript诞生,它的初始名叫LiveScript。 2、1997:ECMAScript标准确立。 3、1999:ES3出现,与此同时IE5风靡一时。 4、2000–2005: XMLHttpRequest又名AJAX, 在Outlook Web Access (2000)、Oddpost (2002),Gmail (2004)和Google Maps (2005)大受重用。 5、2009: ES5出现,(就是我们大多数人现在使用的)例如foreach,Object.keys,Object.create和JSON标准。 6、2015:ES6/ECMAScript2015出现。 1.Default Parameters(默认参数) in ES6 还记得我们以前(ES5)不得不通过下面方式来定义默认参数: var link = function (height, color, url) { var height = height || 50; var color = color || 'red'; } 但在ES6,我们可以直接把默认值放在函数申明里: var link = function(height = 50, color = 'red',

JavaScript正则表达式

百般思念 提交于 2019-12-14 06:18:40
创建正则表达式 使用字面量形式创建: var pattern = /pattern/g || i || m; /pattern/:两个反斜杠里面是你要匹配的规则。 g:匹配所有字符,而非发现第一个匹配项时立即停止。 i:不区分大小写。 m:多行匹配。 当在字符串使用\n换行,但在正则中还是把它看成一行进行匹配,如下代码匹配以a开头的字符,使用\n后应该是配到2个以a开头的字符,但是只匹配到一个a.当加上m使用多行匹配,就可以匹配到两个以a开头的字符。 var str = "abcde\naf"; var reg = /^a/gm; str.match(reg); //match返回匹配结果的数组。 不加 m["a"],加 m["a","a"]; g,i,m可以任意搭配。 使用构造函数创建: var pattern = new RegExp("pattern","i||g||m"); 接收两个字符串参数,第一个是要匹配的字符串模式,第二个是i||m||g. 表达式: 表达式放在[]里,一个[]代表一个位置,[]里面的内容表这个位置的可选范围。 [^abc]:匹配不包含a或b或c的任意字符。 [0-9]:匹配0-9的数字。 [A-z]:匹配所有的大小写英文字母。 (red|blue|green):匹配连续的字符。 如下,字符串只要包含[]里面的任意一个字符,就可以被匹配出来。 var

js数组

心已入冬 提交于 2019-12-13 16:19:21
JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素。 要取得Array的长度,直接访问length属性: var arr = [1, 2, 3.14, ‘Hello’, null, true]; arr.length; // 6 请注意,直接给Array的length赋一个新的值会导致Array大小的变化: var arr = [1, 2, 3]; arr.length; // 3 arr.length = 6; arr; // arr变为[1, 2, 3, undefined, undefined, undefined] arr.length = 2; arr; // arr变为[1, 2] Array可以通过索引把对应的元素修改为新的值,因此,对Array的索引进行赋值会直接修改这个Array: var arr = [‘A’, ‘B’, ‘C’]; arr[1] = 99; arr; // arr现在变为[‘A’, 99, ‘C’] 请注意,如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化: var arr = [1, 2, 3]; arr[5] = ‘x’; arr; // arr变为[1, 2, 3, undefined, undefined, ‘x’] 大多数其他编程语言不允许直接改变数组的大小,越界访问索引会报错。然而

五句话搞定JavaScript作用域

自闭症网瘾萝莉.ら 提交于 2019-12-13 16:09:42
JavaScript的作用域一直以来是前端开发中比较难以理解的知识点,对于JavaScript的作用域主要记住几句话,走遍天下都不怕。 一、“JavaScript中无块级作用域” 在Java或C#中存在块级作用域,即:大括号也是一个作用域。 public static void main (){ if(1==1){ String name = "seven"; } System.out.println(name); } // 报错 public static void Main() { if(1==1){ string name = "seven"; } Console.WriteLine(name); } // 报错 在JavaScript语言中无块级作用域 function Main(){ if(1==1){ var name = 'seven'; } console.log(name); } // 输出: seven 补充:标题之所以添加双引号是因为JavaScript6中新引入了 let 关键字,用于指定变量属于块级作用域。 二、JavaScript采用函数作用域 在JavaScript中每个函数作为一个作用域,在外部无法访问内部作用域中的变量。 function Main(){ var innerValue = 'seven'; } Main(); console.log

JS 定义全局变量

大城市里の小女人 提交于 2019-12-13 15:22:57
JavaScript声明全局变量三种方式的异同 JavaScript中声明变量格式:var(关键字)+变量名(标识符)。 方式1 var test; var test = 5; 需注意的是该句不能包含在function内,否则是局部变量。这是第一种方式声明全局变量。 方式2 test = 5; 没有使用var,直接给标识符test赋值,这样会隐式的声明了全局变量test。即使该语句是在一个function内,当该function被执行后test变成了全局变量。 方式3 window.test; window.test = 5; 这种方式经常被用到一个匿名函数执行后将一些函数公开到全局。 如JQuery1.5中最末一句 window.jQuery = window.$ = jQuery; 来源: CSDN 作者: Richarlie 链接: https://blog.csdn.net/s_156/article/details/103525880

JavaScript,20个常用字符串方法及使用方式

有些话、适合烂在心里 提交于 2019-12-13 14:43:55
1.charAt(x) charAt(x)返回字符串中x位置的字符,下标从 0 开始。 //charAt(x) var myString = 'jQuery FTW!!!' ; console . log ( myString . charAt ( 7 ) ) ; //output: F 2.charCodeAt(x) charCodeAt(x)返回字符串中x位置处字符的unicode值。 //charAt(position) var message = "jquery4u" //alert "113" alert ( message . charAt ( 1 ) 3.concat(v1,v2…) concat() 方法用于连接两个或多个字符串,此方法不改变现有的字符串,返回拼接后的新的字符串。 //concat(v1, v2,..) var message = "Sam" var final = message . concat ( " is a" , " hopeless romantic." ) //alerts "Sam is a hopeless romantic." alert ( final ) 4.fromCharcode(c1,c2) fromCharcode(c1,c2)转换一组Unicode值转换为字符。 //fromCharCode(c1, c2,...)

js数组方法整理

我是研究僧i 提交于 2019-12-13 11:50:39
整理了以下数组方法 join() push()和pop() shift() 和 unshift() sort() reverse() concat() slice() splice() indexOf()和 lastIndexOf() (ES5新增) forEach() (ES5新增) map() (ES5新增) filter() (ES5新增) every() (ES5新增) some() (ES5新增) 1、join() join,就是把数组转换成字符串,然后给他规定个连接字符,默认的是逗号( ,)   书写格式:join(" "),括号里面写字符串 ("要加引号"), var arr = [1,2,3]; console.log(arr.join());     // 1,2,3 console.log(arr.join("-"));   // 1-2-3 console.log(arr);         // [1, 2, 3](原数组不变) 2、push()和pop() push(): 把里面的内容添加到数组末尾,并返回修改后的长度。 pop():移除数组最后一项,返回移除的那个值,减少数组的length。     书写格式:arr.push(" "),括号里面写内容 ("字符串要加引号"),     书写格式:arr.pop( ) var arr = ["Lily",

js声明变量的三种方式

邮差的信 提交于 2019-12-13 07:28:32
JS 声明变量的三种方式 (1)使用变量步骤:a.声明-->b.赋值-->3.调用 正确用法: <script type="text/javascript"> // 方式一:声明和赋值不分离 var correctUsage = "正确使用变量的方式一"; alert(correctUsage); //能够弹出来该变量所对应的值 // 方式二:声明和赋值分离 var correctUsage2; correctUsage2 = "正确使用变量的方式二"; alert(correctUsage2); </script> 错误用法: <script type="text/javascript"> var correctUsage; // 错误一: 没有赋值就使用 alert(correctUsage); //underfined // 错误二:没有赋值就拼接字符串 correctUsage += "没有赋值就改值"; alert(correctUsage); //undefined没有赋值就改值 </script> (2)变量的产生与死亡 已使用var关键词声明表里为例 2.1 声明在函数外部的变量 产生:js加载到该变量所在行时产生 死亡:js代码加载完毕,变量死亡 2.2声明在函数内部的变量 前提:该变量所在的函数被调用 产生:js执行到该变量所在行时产生 死亡:

箭头函数和普通函数的区别

北城以北 提交于 2019-12-12 19:40:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 箭头函数: 最重要的一句话的理解: 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。 这句话刚开始的时候非常难以理解 举个例子 var ttt = "11111111111"; var knowjiantouthis = { ttt:"2222222222222", test1:function () { //这个时候的this其实是和调用他的对象有关 console.log(this.ttt);//2222222222222 }, test2: () => { //这里面的this其实和他定义的knowjiantouthis这个对象是一起的,也就是window console.log(this.ttt);//11111111111 }, test3:function () { return ()=>{ //这里面的this和他定义时所在的对象是test3,而test3的this是指向obj的 console.log(this.ttt);//2222222222222 } } } knowjiantouthis.test1(); knowjiantouthis.test2(); knowjiantouthis.test3()(); 来源: oschina 链接: https://my