ECMAScript

JavaScript继承(一)——原型链

风格不统一 提交于 2020-03-18 11:35:50
某厂面试归来,发现自己落伍了!>>> 继承是面向对象语言中一个最为人津津乐道的概念。许多面向对象语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。在ECMAScript中,函数没有签名,无法实现接口继承,只支持实现继承,继承主要依靠的是原型链。 先来看一个简单的原型链继承示例,如下图: 首先声明一个 Human 函数,给它的原型添加一个 getHumanSex 方法。然后声明一个 Person 函数,要让 Person 继承 Human ,能使用 Human 的属性和方法,只要把 Person 的原型重新赋值为 Human 的一个实例就好了。最后给 Person 的原型(也就是 Human 的这个实例)添加一个 getPersonSex 方法。现在创建 Person 的一个实例 personObj , name = '张三',age = 12 。如果访问 personObj.name ,那么就可以直接访问到是 张三 了。假如现在要访问 humanSex ,因为 personOb j中没有,所以会顺着 __proto__ 属性到 Person 的原型中去找,而 Person 的原型就是 Human 的一个实例,它的 humanSex 属性就是 '男/女' ,所以 personObj.humanSex 的值就是 '男/女'

在JavaScript中使用动态变量名称

孤人 提交于 2020-03-16 15:31:12
某厂面试归来,发现自己落伍了!>>> 在PHP中,您可以执行以下令人惊奇/可怕的事情: $a = 1; $b = 2; $c = 3; $name = 'a'; echo $$name; // prints 1 有没有办法用Java做类似的事情? 例如,如果我有一个 var name = 'the name of the variable'; 如何获得名称为 name 的变量的引用? #1楼 他们的意思是不,你不能。 没有办法完成它。 所以有可能你可以做这样的事情 function create(obj, const){ // where obj is an object and const is a variable name function const () {} const.prototype.myProperty = property_value; // .. more prototype return new const(); } 具有与ECMAScript 5中实现的功能相同的创建功能。 #2楼 eval()在我的测试中不起作用。 但是可以向DOM树添加新的JavaScript代码。 因此,这是一个添加新变量的函数: function createVariable(varName,varContent) { var scriptStr = "var "+varName

ECMAScript版本

主宰稳场 提交于 2020-03-16 15:20:56
ECMAScript版本介绍 百度介绍: ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,所以它可以理解为是JavaScript的一个标准,但实际上后两者是ECMA-262标准的实现和扩展。 ECMA是一种标准脚本程序设计语言,任何浏览器要使用这种标准就必须支持这种脚本,以前的浏览器是各实现各的,现在浏览器基本支持这种脚本,ECMAScript版本更新,浏览器也要更新。 JavaScript是按ECMAScript规范实现的一种脚本语言,其他的还有JScript、ActionScript。 这三种语言还提供了ECMA规范外的额外功能。 ECMAScript版本: 1997------ECMAScript1 1998------ECMAScript2 1999------ECMAScript3 功能:添加正则表达式 、 添加 try/catc h 没有发布------ECMAScript4 2009------ECMAScript5 功能:严格模式 2011------ECMAScript5.1 2015------ECMAScript6

ECMAScript

♀尐吖头ヾ 提交于 2020-03-16 15:17:15
ECMAScript 是一种由 Ecma国际 (前身为 欧洲计算机制造商协会 )通过ECMA-262标准化的 脚本 程序设计语言 。这种语言在 万维网 上应用广泛,它往往被称为 JavaScript 或 JScript ,但实际上后两者是ECMA-262标准的 实现 和扩展。 目录 1 历史 2 版本 3 方言 4 对应版本 5 参考文献 6 参见 7 外部链接 历史 1995年 12月 升阳公司 与 网景通讯公司 一起引入了JavaScript。 1996年 3月,网景通讯公司发表了支持JavaScript的 网景导航者 2.0。由于JavaScript作为网页的客户端脚本语言非常成功, 微软 于 1996年 8月引入了 Internet Explorer 3.0,这个软件支持一个“约”与JavaScript相容的JScript。 1996年11月网景通讯公司将JavaScript提交给欧洲计算机制造商协会进行标准化。ECMA-262的第一个版本于 1997年 6月被Ecma组织采纳。 ECMAScript是由ECMA-262标准化的脚本语言的名称。JavaScript和JScript与ECMAScript相容,但包含超出ECMAScript的功能。 版本 至今为止有四个ECMA-262版本发表,代号“ Harmony ”版本正在工作中。 版本 发表日期 与前版本的差异 1

ECMAScript 6 简介

生来就可爱ヽ(ⅴ<●) 提交于 2020-03-16 14:05:20
ECMAScript 6 是JavaScript的下一个标准,正处在快速开发之中,大部分已经完成了,预计将在2014年正式发布。Mozilla将在这个标准的基础上,推出JavaScript 2.0。 ECMAScript 6 的目标,是使得JavaScript可以用来编写复杂的应用程序、函数库和代码的自动生成器(code generator)。 最新的浏览器已经部分支持ECMAScript 6 的语法,可以通过 《ECMAScript 6 浏览器兼容表》 查看浏览器支持情况。 ECMAScript 6 新内容一览 let, const (定义块级局部变量), 函数在块级域中 解构 : let {x, y} = pt; let [s, v, o] = triple(); (如可以 let pt = {x:2, y:-5} ). 参数设置默认设置 : function f(x, y=1, z=0) {...} rest : function g(i, j, ...r) { return r.slice(i, j); } (而不是疯狂地使用arguments). spread : let a = [0,1,2,3] , o = new Something(...a); proxies : let obj = Proxy.create(handler, proto) . 简单地说

Ecma & ECMAScript

偶尔善良 提交于 2020-03-11 02:28:56
Ecma International 是一个成立于1961年的行业协会,致力于信息和通信系统的标准化。 自1961年至今,Ecma International®一直有效,为及时制定各种全球信息和通信技术(ICT)和消费电子(CE)标准提供了便利。 TC39 - ECMAScript的® 通用,跨平台,与供应商无关的编程语言ECMAScript™的标准化。 ECMAScript的® 是Ecma国际组织的注册商标。 JavaScript TM是Oracle的商标。 来源: CSDN 作者: daqiang012 链接: https://blog.csdn.net/daqiang012/article/details/104779369

Mozilla JavaScript

喜欢而已 提交于 2020-03-11 01:04:11
JavaScript ( JS ) 是一种具有 函数优先 的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web 页面的脚本语言而出名的,但是它也被用到了很多 非浏览器环境 中,例如 Node.js 、 Apache CouchDB 和 Adobe Acrobat 。JavaScript 是一种 基于原型编程 、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。了解更多 JavaScript 。 本部分将专注于 JavaScript 语言本身,而非局限于网页或其他限制环境。想要了解网页有关的 APIs ,请参考 Web APIs 以及 DOM 。 JavaScript 的标准是 ECMAScript 。截至 2012 年,所有的 现代浏览器 都完整的支持 ECMAScript 5.1,旧版本的浏览器至少支持 ECMAScript 3 标准。2015年6月17日, ECMA国际组织 发布了 ECMAScript 的第六版,该版本正式名称为 ECMAScript 2015,但通常被称为 ECMAScript 6 或者 ES6。自此,ECMAScript 每年发布一次新标准。本文档目前覆盖了最新 ECMAScript 的草案,也就是 ECMAScript2020 。 不要将 JavaScript 与 Java编程语言 混淆。虽然“Java”和

为什么Date.parse给出不正确的结果?

独自空忆成欢 提交于 2020-03-10 22:12:22
情况一: new Date(Date.parse("Jul 8, 2005")); 输出: 2005年7月8日星期五00:00:00 GMT-0700(PST) 案例二: new Date(Date.parse("2005-07-08")); 输出: Thu Jul 07 2005 17:00:00 GMT-0700(PST) 为什么第二次解析不正确? #1楼 根据 http://blog.dygraphs.com/2012/03/javascript-and-dates-what-mess.html 的格式,“ yyyy / mm / dd”解决了常见问题。 他说:“请尽可能将日期字符串粘贴到“ YYYY / MM / DD”。它被普遍支持且明确。使用这种格式,所有时间都在本地。 我已经设置了测试: http : //jsfiddle.net/jlanus/ND2Qg/432/ 此格式:+通过使用ymd排序和4位数字的年份避免了日和月顺序的歧义+避免了UTC与本地问题的冲突 dygraphs的 家伙通过使用斜杠+ danvk来符合ISO格式,他说这种格式在所有浏览器中都很好。 #2楼 另一种解决方案是用日期格式构建一个关联数组,然后重新格式化数据。 此方法对于以异常方式格式化日期很有用。 一个例子: mydate='01.02.12 10:20:43': myformat='dd

JavaScript程序开发(八)—js语法之数据类型

三世轮回 提交于 2020-03-09 19:06:25
  由于环境关系,今天下定决心,要在半年之内,让自己的技术水平有一个很大的提高,而不能仅仅限于在自己的工作范围之内,但是我做的工作,绝不是为了某些人而做,是为了给自己争口气,即所谓人活一张脸,树活一张皮!废话少说,进入正题,接着昨天的题目,继续js的数据类型。 Boolean类型   Boolean类型是js中使用的最多的一种数据类型,该类型只有两个值:true和false。这两个数值和数字值不是一回事,因此true不一定等于1,false也不一定等于0。如下实例是为变量赋Boolean类型值的例子: var flag = true; var lost = false;   关于Boolean类型有一点需要注意的是Boolean类型的字面值是区分大小写的,也就是说True和False并不是Boolean类型数据,而只是普通标示符,但未了增加代码的易读性和避免一些不必要的问题出现,不建议用这两个标示符做变量。   虽然Boolean类型只有两个值,但是所有类型的数据都可以通过Boolean()函数转换成对应的Boolean类型值。如下实例代码所示: var flag = "Hello World!"; var msg = Boolean(flag);   各种数据类型与Boolean类型的转换规则如下表所述: 数据类型 转换为true 转换为false Boolean true

javascript学习笔记之对象

末鹿安然 提交于 2020-03-08 19:56:18
一、Object类型 1、使用new运算符创建Object var obj = new Object(); 也可以省略new关键字 var obj = Object(); 2、字面量方式创建Object var obj = { name : value } delete obj.name;//删除对象属性 //匿名对象的创建 {name : value} 内置对象 ECMA-262对内置对象的定义是:“由ECMAScript实现提供的、不依赖宿主环境的对 象,这些对象在ECMAScript程序执行之前就已经存在了。”意思就是说,开发人员不必显 示地实例化内置对象;因为它们已经实例化了。ECMA-262只定义了两个内置对象:Global 和Math。 一.Global对象 Global(全局)对象是ECMAScript中一个特别的对象,因为这个对象是不存在的。在 ECMAScript中不属于任何其他对象的属性和方法,都属于它的属性和方法。所以,事实上, 并不存在全局变量和全局函数;所有在全局作用域定义的变量和函数,都是Global对象的 属性和方法。 PS:因为ECMAScript没有定义怎么调用Global对象,所以,Global.属性或者Global. 方法()都是无效的。(Web浏览器将Global作为window对象的一部分加以实现) Global对象有一些内置的属性和方法: