web inspector and modern javascript€¦ · 6 ecmascript. 6 ecmascript. 6 javascript. 6. 6. 6 maps...

138
© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple. #WWDC14 Web Inspector and Modern JavaScript Session 512 Timothy Hatcher WebKit Developer Experience Manager Media

Upload: others

Post on 08-Jul-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

© 2014 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

#WWDC14

Web Inspector and Modern JavaScript

Session 512 Timothy Hatcher WebKit Developer Experience Manager

Media

Page 2: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web Inspector and Modern JavaScript

Page 3: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web Inspector and Modern JavaScript

Page 4: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScript and Web Inspector

Page 5: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScript

Page 6: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

JavaScript

Page 7: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

ECMAScript

Page 8: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

ECMAScript

Page 9: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

1.0—June 1997

2.0—June 1998

3.0—December 1999

4.0—Abandoned

5.0 (3.1)—December 2009

ECMAScript 5.1—June 2011

Page 10: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

ECMAScript

Page 11: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

6ECMAScript

Page 12: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

6ECMAScript

Page 13: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

6JavaScript

Page 14: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

6

Page 15: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

6

Page 16: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

6Maps

Sets

Weak Maps

Destructuring

For-of Loops

Spread Operator

Promises

Computed PropertiesMath Additions

String Additions

Iterators

Page 17: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

6

Page 18: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 19: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 20: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMath Additions

Page 21: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMath Additions

sinhtanh

asinh

log10

log2

acosh

atanh

coshlog1p

expm1

hypottrunc

imul

froundcbrt

Page 22: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 23: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 24: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMap Object

Page 25: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMap Object

var simpleMap = {};

Page 26: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMap Object

var simpleMap = {};simpleMap["foo"] = 42;

Page 27: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMap Object

var simpleMap = {};simpleMap["foo"] = 42;delete simpleMap["foo"];

Page 28: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMap Object

var simpleMap = new Map; simpleMap.set("foo", 42); simpleMap.delete("foo");

Page 29: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMap with Object Keys

var nodeMap = new Map; nodeMap.set(node, data); nodeMap.get(node).foo;

Page 30: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptMap with Weak References

var nodeMap = new WeakMap; nodeMap.set(node, data); node.remove();

Page 31: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 32: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 33: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Arrays

Page 34: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Arrays

foo() { return [1, 2] }

Page 35: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Arrays

foo() { return [1, 2] }

var result = foo();

Page 36: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Arrays

foo() { return [1, 2] }

var result = foo();var alpha = result[0];

Page 37: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Arrays

foo() { return [1, 2] }

var result = foo();var alpha = result[0];var beta = results[1];

Page 38: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Arrays

foo() { return [1, 2] } !

var [alpha, beta] = foo(); !

Page 39: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Objects

Page 40: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Objects

foo() { return {x: 4, y: 9} }

Page 41: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Objects

foo() { return {x: 4, y: 9} }

var result = foo();

Page 42: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Objects

foo() { return {x: 4, y: 9} }

var result = foo();var myX = result.x;

Page 43: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Objects

foo() { return {x: 4, y: 9} }

var result = foo();var myX = result.x;var y = result.y;

Page 44: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptDestructuring Objects

foo() { return {x: 4, y: 9} } !

var {x: myX, y} = foo(); !

Page 45: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 46: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 47: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptSpread Operator for calls

function foo(a, b, c) {} var args = [1, 2, 3]; foo.apply(null, args);

Page 48: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptSpread Operator for calls

function foo(a, b, c) {} var args = [1, 2, 3]; foo(...args);

Page 49: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptSpread Operator with constructors

var parts = fetchParts(); var d = new Date(...parts);

Page 50: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptSpread Operator in array literals

var a = [1, 2, 3]; var z = [5, 6, 7]; var all = [1, 2, 3, 4, 5, 6, 7];

Page 51: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptSpread Operator in array literals

var a = [1, 2, 3]; var z = [5, 6, 7]; var all = [...a, 4, ...z];

Page 52: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 53: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 54: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptTraditional loops

var len = items.length; for (var i = 0; i < len; ++i) total += items[i];

Page 55: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptTraditional loops

items.forEach(function(item) { total += item; });

Page 56: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptFor-of Loop

for (var item of items) total += item;

Page 57: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

for (var value of someSet) process(value);

Modern JavaScriptFor-of Loop and Sets

Page 58: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

for (var [k, v] of someMap) process(k, v);

Modern JavaScriptFor-of Loop and Maps

Page 59: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

for (var [node] of nodeMap) node.remove();

Modern JavaScriptFor-of Loop and WeakMaps

Page 60: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 61: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 62: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptPromises

load(url);

Page 63: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptPromises

var data = load(url);

Page 64: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptPromises

load(url, function(a) { load(a.url, process); });

Page 65: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptPromises

load(url, function(a) { load(a.url, function(b) { load(b.url, process); }); });

Page 66: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptPromises

load(url).then(function(a) { return load(a.url); }).then(function(b) { return load(b.url); }).then(process);

Page 67: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptWaiting for all Promises

var imgs = [load(a), load(b)]; Promise.all(imgs).then(done);

Page 68: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptRacing your Promises

var imgs = [load(a), load(b)]; Promise.race(imgs).then(done);

Page 69: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 70: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScriptLanguage highlights

Math Additions

Maps and Sets

Destructuring

Spread Operator

For-of Loops

Promises

Page 71: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScript

Page 72: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Modern JavaScript and Web Inspector

Page 73: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web Inspector

Page 74: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 75: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 76: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 77: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 78: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 79: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 80: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

WebKit

Page 81: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

JavaScriptCoreWebKit

Page 82: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 83: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 84: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 85: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

"com.apple.security.get-task-allow"

Page 86: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 87: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 88: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 89: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 90: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 91: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorJavaScript Source URLs

-[JSContext evaluateScript:withSourceURL:] !

JSEvaluateScript(…, sourceURL, …)

Page 92: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorJavaScript Source URLs

-[JSContext evaluateScript:withSourceURL:] !

JSEvaluateScript(…, sourceURL, …)

Page 93: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorJavaScript Context Name

@interface JSContext @property NSString *name; @end !

JSGlobalContextSetName(…)

Page 94: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorJavaScript Context Name

@interface JSContext @property NSString *name; @end !

JSGlobalContextSetName(…)

Page 95: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

DemoMac App and JavaScriptCore inspection

Page 96: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorMac App and JavaScriptCore inspection

Any web view or JavaScript context

Only apps with “get task allow” entitlement

Name your contexts, pages, and scripts

Page 97: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 98: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 99: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Page 100: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

◉◉

Page 101: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

◉◉

Page 102: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

◉◉<>{?

Page 103: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

◉◉<>{

Page 104: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

<>

Page 105: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

<>{ Move Event

Click Event

Timer Added

Timer Fired

Forced Layout

Page 106: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

<>{ Move Event

Click Event

Timer Added

Timer Fired

Forced Layout

Page 107: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 108: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 109: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 110: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 111: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 112: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 113: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 114: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Page 115: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

◉ { event.pageXevent.pageYevent.buttonevent.altKey …

Page 116: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

DemoSource Code Timelines and Breakpoint Probes

Page 117: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 118: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 119: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 120: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 121: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 122: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 123: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 124: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 125: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties
Page 126: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

DemoColor and Gradient editing

Page 127: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 128: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Web InspectorNew features

Mac App inspection

JavaScriptCore support

Source Code Timelines

Breakpoint Probes

Accessibility details

Color and Gradient editing

Page 129: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Summary

Page 130: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Summary

Take advantage of new JavaScript language features

Page 131: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Summary

Take advantage of new JavaScript language features

Web Inspector is now available for Mac apps

Page 132: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Summary

Take advantage of new JavaScript language features

Web Inspector is now available for Mac apps

Enjoy debugging your JavaScriptCore contexts

Page 133: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Summary

Take advantage of new JavaScript language features

Web Inspector is now available for Mac apps

Enjoy debugging your JavaScriptCore contexts

Make your web apps accessible

Page 134: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Summary

Take advantage of new JavaScript language features

Web Inspector is now available for Mac apps

Enjoy debugging your JavaScriptCore contexts

Make your web apps accessible

Be a colorful person

Page 135: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

More Information

Evangelism [email protected]

!

Developer Technical support http://developer.apple.com/contact

Apple Developer Forums http://devforums.apple.com

Page 136: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Related Sessions

• Improving the Accessibility and Usability of Complex Web Applications

Marina Friday 9:00AM

• Designing Responsive Web Experiences Marina Friday 10:15AM

Page 137: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties

Labs

• Safari and WebKit Lab Media Lab B Thursday 2:00PM

Page 138: Web Inspector and Modern JavaScript€¦ · 6 ECMAScript. 6 ECMAScript. 6 JavaScript. 6. 6. 6 Maps Sets Weak Maps Destructuring For-of Loops Spread Operator Promises Computed Properties