我们知道JS函数内部有个arguments对象,可以拿到全部实参。现在ES6给我们带来了一个新的对象,可以拿到除开始参数外的参数,即剩余参数(废话好多 O(∩_∩)O~)。 这个新的对象和arguments不一样,它是程序员自定义的一个普通标识符,只是需要在前面加上三个点:...function func(a, ...rest) {console.log(a)console.log(rest) } func(1) func(1, 2, 3, 4)注意func的第二个参数rest,前面有三个点。定义好后调用了两次,结果分别如...
在这之前我们比较值使用两等号 “==” 或 三等号“===”, 三等号更加严格,只要比较两方类型不同立即返回false。 另外,有且只有一个值不和自己相等,它是NaN现在ES6又加了一个Object.is,让比较运算的江湖更加混乱。多数情况下Object.is等价于“===”,如下1 === 1 // true Object.is(1, 1) // true'a' === 'a' // true Object.is('a', 'a') // truetrue === true // true Object.is(true, true) // truenull === null // true O...
ES6里加入了一个新数据解构Set,和Java的Set一样,它里面不存放重复的元素。Set实现为一个类,使用时需要先new。var s1 = new Set() s1.add(1) s1.add(2) s1.add(3) s1.add(1)var s2 = new Set() s2.add('a') s2.add('a')// 输出1,2, 3 for (var i of s1 ) {console.log(i) } // 输出a for (var i of s2 ) {console.log(i) } 上面用Set的add方法添加元素,重复添加的,不会存进去。 Set构造器还可以接受数组作为参数传入var s3 = ...
JS的对象本身就是个键值结构,ES6为什么还需要加Map呢,它与普通的JS对象有何区别? 一、Map 1. Map构造器 先看Map的简单用法// 字符串作为key, 和JS对象类似 var map = new Map() // set map.set('name', 'John') map.set('age', 29) // get map.get('name') // John map.get('age') // 29这么对代码,看起来确实没有JS对象简洁 但Map的强大之处在于它的key可以是任意类型// 对象作为key演示 var xy = {x: 10, y: 20} // 坐标 v...
一、JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型,它遵循ECMAScript标准。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,主要用来给HTML增加动态功能。 几乎所有主流的语言都可以编译为JavaScript,进而能够在所有平台上的浏览器中执行,这也体现了JavaScript的强大性和在Web开发中的重要性。如Blade:一个Visual Studio扩展,可以...
ECMAScript5 新增了十个数组方法,这些方法只有在ie9及以上浏览器中可以被使用,下面是对于这些方法的模拟实现。 一、Array.isArray(element)该方法用于判断传入的对象是否为数组类型,返回true和false。 Array.newIsArray = function(element){return Object.prototype.toString.call(element).slice(8,-1).toLocaleLowerCase() === array; }二、.indexOf(element)该方法用于查找传入对象在数组中的位置,并返回该位置,若没有找到...
ECMAScript中最有意思,最强大的地方在于函数。最进在完善自己的js类库的时候发现我们经常在用函数,但真的很少有人懂得ECMAScript函数功能。 1:什么是函数? ECMAScript函数其实就是对象,每个函数都是Function类型的实例而且有属性和方法,由于函数是对象,函数名其实就是指向函数对象的指针,不会与某个函数绑定。 2:创建函数的方法 代码如下:(1):function Person(name) { return name; } (2):var P...
接下来应该是BOM和HTML5了,但是鉴于ECMAScript5相对于ECMAScript3的新变化比较多,而且这些变化也非常的有意思,因此在这篇文章中再将我认为的有意思的变化(并非全部变化)集中整理一下,但这里只是列举,不具体展开。 一、语法变化 1、关键字和保留字 在ES3中,使用关键字做标识符会导致“Identifier Expected ”错误,而使用保留字做标识符可能会也可能不会导致相同的错误,具体取决于特定的引擎。在ES5中,关键字和保留字...
2.1 语法 区分大小写、变量弱类型、行尾分号可有可无、注释为双斜线、括号表明代码块 2.2 变量 变量用var声明,变量的命名规则:第一个字符必须是字母、下划线或美元符号;余下的字符可以是下划线、美元符号或任何字母或数字字符。 变量命名规范: Camel标记法:首字母小写,接下来的单词都以大写字母开头。例如:var myTestValue=0,mySecondTestValue="hi"; Pascal标记法:首字母大写,接下来的单词都以大写字...
2.6 原始类型 ECMAScript有5种原始类型(primitive type),即Undefined、Null、Boolean、Number和String。ECMAScript提供了typeof来判断值的类型。 1、typeof运算符: 代码如下:var sTemp="test string"; alert(typeof sTemp);//outpus "string" alert(typeof 95);//outpus "number" typeof运算符返回值只有5种,分别为:如果变量是Undefined型返回"undefined",如果变量是Boolean型返回"boolean",如果变量是Number型返回...
2.8 引用类型 1、Object类 ECMAScript中的所有类都是由Object类继承而来。 Object类具有下列属性: Constructor:对创建对象的函数的引用(指针),对于Object类,该指针指向原始的Object()函数 Prototype:对该对象的对象原型的引用。 Object类还有几个方法: HasOwnProperty(property):判断对象是否有某个特定的属性。必须用字符串指定该属性值 IsPrototypeOf(object):判断该对象是否为另一个对象...
2.9 运算符 2.9.1、一元运算符 一元运算符只有一个参数,即要操作的对象或值。 1、delete:删除对以前定义的对象属性或方法的引用,但此运算符不能删除开发者未定义的属性和方法。示例: 代码如下:var o=new Object; o.name="Nicholas"; o.show=function(){ return "test"; }; console.log(o.name); //outpus Nicholas console.log(o.show()); //outpus test delete o.name; delete o.show; console.log(o.name); //outpu...
if语句 语法: 代码如下:if(condition){ statement1; } else{ statement2; } 迭代语句 1、do-while语句 语法: 代码如下:do{ statement }while(expression); 2、while语句 语法: 代码如下:while(expression){ statement } 3、for语句 语法: 代码如下:for(initialization;expression;post-loop-expression){ statement; } 4、for-in语句 语法: 代码如下:for(property in expressio...
2.9.5、加性运算符 加性运算符(即加号和减号)通常是最简单的运算符,不过在ECMAScript中,每个加性运算符都有大量的特殊行为。 1、加法运算符: 代码如下:var iResult=1+2; console.log(iResult);//outputs 3 特殊性: 某个运算数是NaN,结果为NaN Infinity加Infinity,结果为Infinity -Infinity加-Infinity,结果为-Infinity Infinity加-Infinity,结果为NaN 如果两个运算数都是字符串,把第二个字符串连接到第一个字...
然后我们再来看es11的,私有属性去看看 可以看到我们这里去声明一个类,在类中,我们声明公有属性直接写就可以 对于私有属性需要在属性前加上#,然后我们写一个构造方法, 注意构造方法中对于私有属性的赋值,要带上#,写全. 然后我们去new这个类,然后传入参数. 去浏览器看看结果,然后 看看浏览器上显示的内容.可以看到这个实例的内容对吧. . 然后我们在类的外面去获取,这