ECMAScript

JavaScript和ECMAScript有什么区别?

无人久伴 提交于 2020-02-26 13:56:54
ECMAScript和JavaScript有什么区别? 根据我的推论,ECMAScript是标准,JavaScript是实现。 这个对吗? #1楼 我知道这是一个旧帖子,但希望这会对某人有所帮助。 在1990年代,不同版本的js开始出现,例如netscape的javascript和Microsoft的js脚本。 因此,ecmascript被引入作为标准。 但是ecmascript只是javascript的一部分,它指定了它的核心语法,类型,对象等。可能解释了diff中javascript的不一致实现。 浏览器 参考-Wrox(适用于Web开发人员的专业Javascript) #2楼 以我的理解,ECMAScript是“理论”或“规范”,而Javascript是“实践”或“实施”。 #3楼 现有的答案很好地解释了重点。 要点是ECMAScript是一种纯粹的抽象语言,没有任何特定于领域的扩展,它本身是没有用的。 该 规范 仅定义语言及其核心对象。 JavaScript,ActionScript和其他方言向其添加了特定于域的库,因此您可以将其用于有意义的事情。 ECMAScript引擎 很多,其中一些是开源的,另一些是专有的。 您可以将它们链接到您的程序中,然后将本机函数添加到全局对象中,以便您的程序可编写脚本。 尽管最常在浏览器中使用它们。 #4楼 JavaScript =

使用“ Object.create”代替“ new”

一笑奈何 提交于 2020-02-26 09:32:16
Javascript 1.9.3 / ECMAScript 5引入了 Object.create ,这是Douglas Crockford等人 提倡 的很长时间了。 如何使用 Object.create 替换下面代码中的 new ? var UserA = function(nameParam) { this.id = MY_GLOBAL.nextId(); this.name = nameParam; } UserA.prototype.sayHello = function() { console.log('Hello '+ this.name); } var bob = new UserA('bob'); bob.sayHello(); (假设存在 MY_GLOBAL.nextId )。 我能想到的最好的是: var userB = { init: function(nameParam) { this.id = MY_GLOBAL.nextId(); this.name = nameParam; }, sayHello: function() { console.log('Hello '+ this.name); } }; var bob = Object.create(userB); bob.init('Bob'); bob.sayHello(); 似乎没有任何优势

HTMLDOM教程

家住魔仙堡 提交于 2020-02-26 09:09:44
HTMLDOM 1.什么是HTMLDOM? HTMLDOM提供处理HTML文档的API。 2.W3CDOM与HTMLDOM的区别 W3CDOM可以处理HTML/XML文档; HTMLDOM仅能处理HTML文档。 3.获取对象 HTMLElement document.getElementById(string id) 4.访问HTML对象的属性 object.属性名称 = 值 [var 变量名称 = ] object.属性名称 说明: A.HTML标记的属性即HTMLDOM节点的属性。 B.如果HTML标记的属性为合成词,在HTMLDOM中应采用"驼峰标记法"命名。 C.HTML标记的class属性,在HTMLDOM中应使用className取代。(因为class是ECMAScript预保留的关键字) D.HTML标记的style属性,在HTMLDOM中将返回 CSSStyleDecleration(或CSS2Properties)对象。 5.CSSStyleDecleration对象 访问CSS样式 CSSStyleDeclaration.属性名称 = 值 [var 变量名称 = ] CSSStyleDeclaration.属性名称 = 值 说明: A.如果CSS样式为单个单词,则在CSSStyleDeclaration对象中直接书写。 B.如果CSS样式带有短横线

解释封装的匿名函数语法

感情迁移 提交于 2020-02-26 07:03:18
摘要 您能解释JavaScript中封装的匿名函数的语法背后的原因吗? 为什么这样做: (function(){})(); 但这不是: function(){}(); ? 我知道的 在JavaScript中,将创建一个命名函数,如下所示: function twoPlusTwo(){ alert(2 + 2); } twoPlusTwo(); 您还可以创建一个匿名函数并将其分配给变量: var twoPlusTwo = function(){ alert(2 + 2); }; twoPlusTwo(); 您可以通过创建一个匿名函数来封装代码块,然后将其包装在方括号中并立即执行: (function(){ alert(2 + 2); })(); 在创建模块化脚本时,这很有用,以避免因潜在冲突的变量而使当前范围或全局范围混乱(例如Greasemonkey脚本,jQuery插件等)。 现在,我明白了为什么这样做了。 方括号将内容括起来,仅显示结果(我敢肯定有一种更好的描述方式),例如 (2 + 2) === 4 。 我不明白的 但是我不明白为什么这不能同样有效: function(){ alert(2 + 2); }(); 你能跟我解释一下吗? #1楼 即使这是一个古老的问答,它仍然讨论了一个主题,该主题至今仍使许多开发人员陷入困境。

如何获取Javascript对象的所有属性值(不知道键)?

三世轮回 提交于 2020-02-26 01:43:47
如果有一个Javascript对象: var objects={...}; 假设它具有50多个属性,却不知道属性名称(即不知道“键”)如何在循环中获取每个属性值? #1楼 这是一个可重用的函数,用于将值放入数组。 它也考虑了原型。 Object.values = function (obj) { var vals = []; for( var key in obj ) { if ( obj.hasOwnProperty(key) ) { vals.push(obj[key]); } } return vals; } #2楼 根据您必须支持的浏览器,可以通过多种方式完成此操作。 狂野的绝大多数浏览器都支持ECMAScript 5(ES5),但请注意,下面的许多示例都使用 Object.keys ,而在IE <9中不可用。请参阅 兼容性表 。 ECMAScript 3+ 如果必须支持IE的旧版本,则可以选择以下选项: for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var val = obj[key]; // use val } } 嵌套的 if 可以确保您不枚举对象原型链中的属性(这几乎是您肯定想要的行为)。 您必须使用 Object.prototype

“箭头功能”和“功能”是否等效/可互换?

耗尽温柔 提交于 2020-02-25 15:34:05
ES2015中的箭头函数提供了更简洁的语法。 我现在可以用箭头函数替换所有函数声明/表达式吗? 我要注意什么? 例子: 构造函数 function User(name) { this.name = name; } // vs const User = name => { this.name = name; }; 原型方法 User.prototype.getName = function() { return this.name; }; // vs User.prototype.getName = () => this.name; 对象(文字)方法 const obj = { getName: function() { // ... } }; // vs const obj = { getName: () => { // ... } }; 回呼 setTimeout(function() { // ... }, 500); // vs setTimeout(() => { // ... }, 500); 可变函数 function sum() { let args = [].slice.call(arguments); // ... } // vs const sum = (...args) => { // ... }; #1楼 tl; dr: 不! 箭头函数和函数声明

前端基础之JavaScript

一个人想着一个人 提交于 2020-02-25 12:38:47
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 实现的基础。 ECMA-262 是 JavaScript 标准的官方名称。 ECMAScript 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加tru/catch ECMAScript 4 没有发布 2009

基础js

爷,独闯天下 提交于 2020-02-23 21:24:38
1.1背景 1.1.1javascipt与ECMAScript ECMAScript是JavaScript的官方命名。 JavaScript是一种编程语言。 ECMAScript是这种语言规范的名字。 1.1.2 JAVAScript的影响和本质 了解即可 1.2语法 1.2.1 语法概述 主要是等于号。 一个等于号是用于变量赋值。 三个连续的等于号,用于比较两个值。 1.2.2 语句和表达式 1.2.3 分号 1.2.4 注释 1.3 变量和赋值 有一些不能当变量名 case while等 1.4 值 所有的值都有属性,每一个属性都有一个KEY(或者是name)和一个value。可以认为,属性就像是一条记录的字段。通过. (点操作符)就可以读取属性,还可以调用方法。 1.4.1 原始值和对象 原始值:布尔值,数字,字符串,null和undefined。 其他的值都是对象。 主要区别: 比较方式。 每个对象都有惟一的标识且只等于自己。 原始值有的时候会相等。 1.4.2 原始值 (1)按值进行比较 (2)不可改变 其属性不能被改变,添加和移除。 1.4.3 对象 (1)按照引用来比较 (2)默认是可变的’ 对象的属性可以很自由的改变,添加和移除。 1.4.4 undefined和null (1)undefined 意思是没有值。 没有被初始化的变量的值是undefined。

ECMAScript 6基础

為{幸葍}努か 提交于 2020-02-23 00:32:49
ECMAScript 和 JavaScript 是什么关系?   1996 年 11 月,JavaScript 的创造者 Netscape 公司,希望JavaScript能够成为国际标准,将其提交给标准化组织 ECMA。次年,ECMA 发布了ECMAScript 1.0 版。不叫 JavaScript的原因:一是商标,JavaScript 已被 Netscape 公司注册为商标;二是体现其制定者是 ECMA,不是 Netscape,有利于保证其的开放性和中立性。    let 和 const 命令 let声明变量   块状作用域(任意大括号包含的变量都只在大括号里起作用,超出则报错) {let a=20;} console.log(a);//报错 //使用var var a = []; for (var i = 0; i < 5; i++) { a[i] = function () { console.log(i); }; } a[3](); // 结果为5 //使用let var a = []; for (let i = 0; i < 5; i++) { a[i] = function () { console.log(i); }; } a[3](); // 结果为3   不能重复声明 let a=20; let a=10; console.log(a);//报错  

nodejs 和 js

▼魔方 西西 提交于 2020-02-19 23:25:49
JavaScript组成:ECMAScript(定义这门语言的基础,比如语法、数据类型、结构以及一些内置对象等)、DOM(基于ECMASCRIPT,扩展出来的用于操作页面元素的方法)、BOM(基于ECMASCRIPT,扩展出来的用于操作浏览器的一些方法)。 NodeJS是以ECMASCRIPT为基础,然后在这个基础上扩展出来的一些操作其他东西(即操作非浏览器)的一些方法,比如操作OS操作系统、file文件系统、net网络、database数据库等。也就是说nodejs和JS在底层都是一样的,都是ecmascript,但是扩展出来的功能却是不一样的。一个是偏向于前端浏览器,一个是偏向于后端。 在ecmascript部分node和JS其实是一样的,比如与数据类型的定义、语法结构,内置对象。但在js中的顶层对象是window对象,但是在node中没有什么window对象,node中的顶层对象是global对象。这就是二者的差异性。 在window对象中,定义一个全局变量是可以通过Window来访问的,但是在node中是不能通过global对象来访问的,如: var a=100; console.log(global.a);这种方式是输出结果为undefined 对于上面这个例子,因为在node中定义的变量是模块中的对象,而并不是global全局变量,所以结果为undefined