ECMAScript

JavaScript 苑,追忆。。。

烈酒焚心 提交于 2020-03-06 14:57:58
JavaScript概述 JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Netscape(网景)接收Nombas的理念,( Brendan Eich) 在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript. 为了统一三家,ECMA( 欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。EcmaScript是规范. ECMAScript 尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的: 核心(ECMAScript) 文档对象模型(DOM)Document

如何在JavaScript对象文字中使用变量作为键?

混江龙づ霸主 提交于 2020-03-05 10:38:07
为什么下面的工作? <something>.stop().animate( { 'top' : 10 }, 10 ); 而这不起作用: var thetop = 'top'; <something>.stop().animate( { thetop : 10 }, 10 ); 更清楚地说:目前,我无法将CSS属性作为变量传递给animate函数。 #1楼 我已使用以下内容向对象添加具有“动态”名称的属性: var key = 'top'; $('#myElement').animate( (function(o) { o[key]=10; return o;})({left: 20, width: 100}), 10 ); key 是新属性的名称。 传递给 animate 的属性的对象将为 {left: 20, width: 100, top: 10} 这只是使用其他答案所建议的必填 [] 表示法,但是用的代码行却更少! #2楼 { thetop : 10 } 是有效的对象文字。 该代码将创建一个名为 thetop 的对象,该对象的值为10。以下两项相同: obj = { thetop : 10 }; obj = { "thetop" : 10 }; 在ES5和更早版本中,不能在对象文字中使用变量作为属性名称。 您唯一的选择是执行以下操作: var thetop = "top";

ECMAScript 6之数组的扩展

爷,独闯天下 提交于 2020-03-04 10:21:13
ECMAScript 6之数组的扩展 1. 扩展运算符 扩展运算符( ... ),将一个数组转为用逗号分隔的参数序列。 扩展运算符背后是调用的遍历器接口 ,只要部署了遍历器接口的对象,都能使用扩展运算符。 let x = [ 1 , 2 , 3 , 4 , 5 , 6 ] ; console . info ( ... x ) ; // 1 2 3 4 5 6 扩展运算符主要用于函数的调用。 function add ( x , y ) { return x + y ; } let a = [ 1 , 2 ] ; add ( ... a ) ; // 3 如果扩展运算符后面跟一个空数组,不会有任何效果。 console . info ( ... [ ] , 1 ) ; // 1 扩展运算符后面可以是表达式。 function f ( x ) { if ( x > 0 ) { return [ 1 , 2 , 3 , 4 ] ; } else { return [ - 1 , - 2 , - 3 , - 4 ] ; } } console . info ( ... f ( 1 ) ) ; // 1 2 3 4 console . info ( ... f ( - 1 ) ) ; // -1 -2 -3 -4 扩展运算符不能放在括号里面,除非是函数调用。 //

ECMAScript 6教程 (一)

邮差的信 提交于 2020-03-02 07:22:12
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出 原文连接,博客地址为 http://www.cnblogs.com/jasonnode/ 。该系列课程是汇智网 整理编写的,课程地址为 http://www.hubwiz.com/course/5594e91ac086935f4a6fb8ef/ 什么是ES6?   ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。Mozilla公司将在这个标准的基础上,推出JavaScript 2.0。   ECMAScript和JavaScript到底是什么关系?很多初学者会感到困惑,简单来说,ECMAScript是JavaScript语言的国际标准,JavaScript是ECMAScript的实现。   1996年11月,JavaScript的创造者Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript。这个版本就是ECMAScript 1.0版。   ES6的目标,是使得JavaScript语言可以用来编写大型的复杂的应用程序,成为企业级开发语言。  

ES6中let 和 const 的新特性

ε祈祈猫儿з 提交于 2020-03-01 16:39:31
在javascript中,我们都知道使用var来声明变量。javascript是函数级作用域,函数内可以访问函数外的变量,函数外不能访问函数内的变量。 ECMAScript 6 是 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性。 ES6 与上一个版本 ES5 的所有不同之处,对涉及的语法知识给予详细介绍,并给出大量简洁易懂的示例代码。 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 那今天就让我们来详细了解一下let 和 const . let的特性: 不存在变量提升现象: 即声明前使用,报ReferenceError。适用于for循环计数器。 var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。 // var 的情况 console.log(foo); // 输出undefined var foo = 2; // let 的情况 console.log(bar); // 报错ReferenceError let bar = 2; //前端全栈学习交流圈

《JavaScript 闯关记》之语法

别等时光非礼了梦想. 提交于 2020-03-01 13:10:00
JavaScript 的语法大量借鉴了 C 及其他类 C 语言(如 Java 和 Perl)的语法。因此,熟悉这些语言的开发人员在接受 JavaScript 更加宽松的语法时,一定会有种轻松自在的感觉。本章主要按照 ECMAScript 3 介绍这门语言的基本概念,并就 ECMAScript 5 的变化给出说明。 字符集 JavaScript 程序是用 Unicode 字符集编写的,Unicode 是 ASCII 和 Latin-1 的超集,并支持地球上几乎所有在用的语言。ECMAScript 3 要求 JavaScript 的实现必须支持 Unicode 2.1及后续版本,ECMAScript 5 则要求支持 Unicode 3及后续版本。 扩展阅读「Unicode 与 JavaScript 详解」 http://www.ruanyifeng.com/blog/2014/12/unicode.html 区分大小写 JavaScript 是区分大小写的。也就是说,关键字、变量、函数名和所有的标识符(identifier)都必须采取一致的大小写形式。比如,关键字 while 必须写成 while ,而不能写成 While 或者 WHILE 。同样, online 、 Online 、 OnLine 、 ONLINE 是4个不同的变量名。 但需要注意的是,HTML 并不区分大小写

Lightning组件与后台交互时接口参数统一

坚强是说给别人听的谎言 提交于 2020-02-29 17:51:24
Lightning组件与后台交互时接口参数统一 刚开始在做Lightning项目时,当前台与Apex交互时,都是把参数写明,前台有几个参数需要传递,后台方法就有几个参数,但是项目中,不可避免的出现,加加减减参数就需要反复修改方法的签名,同样该方式对做接口一样,Lightning与后台交互本来就是通过接口. 在上个项目中,后台响应做了包装给前台,现在前台将参数封装给后台,方式都一样,这都是JSON的功劳. JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。(来源百度百科) 正因完全独立于编程语言,所以当不同程序写的系统,当需要交换数据等操作时,大多使用JSON作为媒介(还有就是XML). 定义后台响应包装类 该类很简单一个是状态,一个是提示消息,另一个是存放响应的数据,后台在返回时直接实例给值,如下 JS端如下,格式固定,第一个IF判断是否为SUCCESS是Lightning处理的结果,比如接口不通,后台有Apex抛出异常,需要在这里处理异常

JavaScript继承(四)——原型式继承

冷暖自知 提交于 2020-02-29 14:10:00
道格拉斯·克罗克福特在2006年提出了原型式继承,他的想法是基于已有的对象借助原型创建新对象,同时还不必因此创建一个自定义类型。为此,他给出了下面的函数: function object(obj){ function F(){} F.prototype = obj; return new F(); } 在 object 函数内部,先创建了一个临时性的构造函数,然后将传入的对象作为这个构造函数的原型,最后返回了这个临时类型的一个新实例。其实本质还是原型链继承,只不过达到的效果是没有为新创建的对象单独声明一个类型,相当于简化版的原型链继承。来看下面具体的示例: let p = { name: 'bob', friends: ['jack', 'rose'] } let p2 = object(p); console.log(p); console.log(p2); 结果如下: 这个效果和下面这种写法差不多 let p2 = {}; p2.__proto__ = p; console.log(p); console.log(p2); 结果如下: 那为什么不直接使用这种方式呢?原因之一是直接操作对象的 __proto__ 属性比较损耗浏览器的性能。 既然还是原型链继承,那么原型链继承的数据共享问题当然也是存在的,如下示例: p2.friends.push('lily'); console

ECMAScript 6简介

别说谁变了你拦得住时间么 提交于 2020-02-28 11:48:16
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 标准的制定者有计划,以后每年发布一次标准,使用年份作为标准的版本。因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015。也就是说,ES6就是ES2015,下一年应该会发布小幅修订的ES2016。 ECMAScript和JavaScript的关系 一个常见的问题是,ECMAScript和JavaScript到底是什么关系? 要讲清楚这个问题,需要回顾历史。1996年11月,JavaScript的创造者Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这种语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准从一开始就是针对JavaScript语言制定的,但是之所以不叫JavaScript,有两个原因。一是商标,Java是Sun公司的商标,根据授权协议,只有Netscape公司可以合法地使用JavaScript这个名字,且JavaScript本身也已经被Netscape公司注册为商标

es2020 新特性

↘锁芯ラ 提交于 2020-02-28 06:02:34
种草 ES2020 新特性 这几年,Ecma TC39 一年一次更新 ecmascript 规范标准,截止目前,以下特性已进入 finished 状态。现在带大家体验种草 ES2020 新特性。 一:Promise.allSettled Promise.all 缺陷 都知道 Promise.all 具有并发执行异步任务的能力。但它的最大问题就是如果其中某个任务出现异常 (reject),所有任务都会挂掉,Promise 直接进入 reject 状态。 想象这个场景:你的页面有三个区域,分别对应三个独立的接口数据,使用 Promise.all 来并发三个接口,如果其中任意一个接口服务异常,状态是 reject, 这会导致页面中该三个区域数据全都无法渲染出来,因为任何 reject 都会进入 catch 回调,很明显,这是无法接受的,如下: Promise.all([ Promise.reject({code: 500, msg: '服务异常' }), Promise.resolve({ code: 200, list: []}), Promise.resolve({code: 200, list: []}) ]) .then((ret) => { // 如果其中一个任务是 reject,则不会执行到这个回调。 RenderContent(ret); }) .catch((error)