SlideShare a Scribd company logo
EcmaScript5.1MASTERING NAMESPACES!Илья Канторhttp://javascript.ru
История
varuser=<username="John"><fieldtype="age"value="25"/><fieldtype="email"value="john@gmail.com"/></user>alert(user.field.(@type=="email").@value)1997ECMA-262 1st edition1999ECMA-2623rd edition 2001Compact Profile 2004E4X   — ECMA-262 4th ed.2009ECMA-2625th edition ???   —ECMA-262Harmony
ECMA-2625th edition Что нового?
ECMA-2625th edition Багфиксы
obj={class:'Menu'}ES3: ошибкаES5: ok
functiontest(str){varre=/ok/galert(re.test(str))}test("ok")test("ok")// true// ES3: false,  ES5: true
alert(parseInt("010")==parseFloat("010"))ES3: falseES5: true
varobj={a:1,b:2,}vararr[1,2,3,]ES3: errorES5: ok
МетаСвойства
writable = falseobj={class:'Menu'}obj.class='Bird‘=>obj.class == ‘Menu’
configurable = falseobj={class:'Menu'}deleteobj.class=>obj.class == ‘Menu’
enumerable = falseObject.prototype.each=...for(propin{}){// без свойства ‘each’}
ОбъявлениеObject.defineProperty({},"class",{value:"Menu",writable:false,configurable:false,enumerable:true})=> { “class” : “Menu” }property descriptor
ОбъявлениеObject.defineProperties({},{class:{value:"Menu",writable:false,configurable:false},height:{value:200,configurable:false}})=> { “class” : “Menu”, “height”: 200 }
Закрытие объектаvaruser={name:"Вася",/* ... */}Object.preventExtensions(user)user.a=5// Нельзя добавлять свойстваObject.seal(user)deleteuser.name// Нельзя удалять свойстваObject.freeze(user)user.name='Петя'// Нельзя менять свойства
Наследованиеanimal={canWalk:true}rabbit=Object.create(animal,{canRun:{value:true}})alert(rabbit.canWalk)// trueObject.getPrototypeOf(rabbit) == animal // true
Наследованиеrabbit=Object.create(animal,{canRun:{value:true}})bird=Object.create(Object.getPrototypeOf(rabbit),{canFly:{value:true}})
Геттеры и Сеттерыuser=Object.defineProperty({},"fullName",{get:function(){returnthis.firstName+' '+this.lastName},set:function(value){vars=value.trim().split(/\s+/,2)this.firstName=s[0]; this.lastName=s[1]}}) user.fullName="Вася Пупкин"alert(user.lastName)// Пупкин
Геттеры и Сеттерыvaruser={getfullName(){returnthis.firstName+' '+this.lastName},setfullName(value){vars=value.trim().split(/\s+/,2)this.firstName=s[0]; this.lastName=s[1]}} user.fullName="Вася Пупкин"alert(user.lastName)// Пупкин
JSON
JSONevent={title:"Conference",date:“today"}str=JSON.stringify(event){"title":"Conference","date":"today"}event =JSON.parse(str)@see https://github.com/douglascrockford/JSON-js
JSON – любые объектыfunctionRoom(number){this.toJSON=function(){returnnumber}}event={title:"Conference",date:newDate(),room:newRoom(22)}JSON.stringify(event){"title":"Conference","date":"2011-02-15T09:12:06.836Z","room":22}
JSON – любые объектыfunctionRoom(number){this.toJSON=function(){returnnumber}}event={title:"Conference",date:newDate(),     Date.prototype.toJSONroom:newRoom(22)}JSON.stringify(event){"title":"Conference","date":"2011-02-15T09:12:06.836Z","room":22}
JSON.stringify(str, whitelist)event={title:"Conference",date:newDate(),domElement:document.body}JSON.stringify(event)=> TypeError: Converting circular structure to JSONJSON.stringify(event,["title","date"])=> {"title":"Conference","date":"2011-02-15T09:44:13.419Z"}
JSON.stringify(str, replacer)event={title:"Conference",date:newDate(),domElement:document.body}JSON.stringify(event,function(key,value){returnvalue.nodeName?undefined:value})=> {"title":"Conference","date":"2011-02-15T09:44:13.419Z"}
JSON.parse(str)str='{"title":"Conference",    \  "date":"2011-02-15T09:44:13.419Z"}'event=JSON.parse(str)пробелы
JSON.parse(str)str='{"title":"Conference",    \  "date":"2011-02-15T09:44:13.419Z"}'event=JSON.parse(str)event.date.getDay()=> TypeError: no method 'getDay'
JSON.parse(str, reviver)str='{"title":"Conference",    \  "date":"2011-02-15T09:44:13.419Z"}'event=JSON.parse(str,function(key,value){if(key=='date'){returnnewDate(value)}returnvalue})event.date.getDay()=> 2
bind
bind(this)functionButton(elem){this.sayHi=function(){alert('Hi')}elem.onclick=function(){this.sayHi()}.bind(this)}
bind(this, args)functionButton(elem){this.say=function(phrase){alert(phrase)}elem.onclick=function(event,phrase){this.say(phrase)}.bind(this,'Hi')}@see http://www.prototypejs.org/api/function/bind
Strict mode
use strict"use strict"... code ...
use strictfunctionF(){"use strict"this.method=function(){// strict mode inherited}}
use strictalert(010)// SyntaxError (octal literals deprecated)a=5// ReferenceError (undeclared a)obj.notWritable=...// TypeErrordeleteobj.notConfigurable// TypeErroreval("var a = 5")alert(a)// ReferenceError (undeclared a)arguments.callee// TypeErrorarguments.caller// TypeError(function(){alert(this)// undefined вместо window})()with(..)// SyntaxError, 'with' statement
Функции,которые давно ждалиObject.keys(obj)"String".trim()Array.isArray(arr)[...].indexOf/lastIndexOf[...].forEach[...].map[...].filter[...].reduce/reduceRight// ...@seehttp://kangax.github.com/es5-compat-table/
The future is now ?PrototypeJSES5-shim
Harmony
It’s all real__noSuchMethod__Proxy.createletblock_scoped="yay!"constREALLY="srsly"#(x) { x * x }ifx>zreturn"без скобок"moduleIter="@std:Iteration" return[i*iforiinrange(n)]functionprintf(format,...args)ek_scoped= "yay!" consEALLY= "srsly"

More Related Content

PPTX
Es51
PPTX
实时用户体验收集
PDF
Gallery%203 {Courtney}
PPS
Portafolio Da4 14 09 2009 EDSON MARROQUIN
PPT
Clearwire Company And Technology Overview
PPT
Die Vrou
PPTX
Four Flippin Boxes - 9 12 12
PDF
Spain V Miguel Hernandez
Es51
实时用户体验收集
Gallery%203 {Courtney}
Portafolio Da4 14 09 2009 EDSON MARROQUIN
Clearwire Company And Technology Overview
Die Vrou
Four Flippin Boxes - 9 12 12
Spain V Miguel Hernandez

Viewers also liked (18)

PDF
P101 B04
PPT
Greg Crowsnest
PPTX
Influenza diego
PPS
Prevalence And Factors Associated With Smoking Among Students And Staff In Upm
PPT
Wisdom Circles Presentation09
PPTX
Edmedia 2014
PPTX
Celebrating Mexicans
PPT
Ny State Lote Check Point B Exam, Yuqing Hong
PDF
Lit 1 Worksheet
PDF
PPTX
Erwartung
PPTX
Writing J27
PPTX
Academic Writing
PPT
PPT
Kloet Onderhoud - Bedrijfsprofiel
PPT
Biggest Fan Contest Entry
P101 B04
Greg Crowsnest
Influenza diego
Prevalence And Factors Associated With Smoking Among Students And Staff In Upm
Wisdom Circles Presentation09
Edmedia 2014
Celebrating Mexicans
Ny State Lote Check Point B Exam, Yuqing Hong
Lit 1 Worksheet
Erwartung
Writing J27
Academic Writing
Kloet Onderhoud - Bedrijfsprofiel
Biggest Fan Contest Entry
Ad

EcmaScript 5.1