Presentation is loading. Please wait.

Presentation is loading. Please wait.

JavaScript: The First Parts Part Eight Douglas Crockford Yahoo! Inc.

Similar presentations


Presentation on theme: "JavaScript: The First Parts Part Eight Douglas Crockford Yahoo! Inc."— Presentation transcript:

1 JavaScript: The First Parts Part Eight Douglas Crockford Yahoo! Inc.

2 A Simple Object Three methods: get(key) put(key, value) remove(key) my_map = make_map(); my_map.put('language', 'JavaScript'); alert(my_map.get('language'));

3 make_map var make_map = function () { var map = {}; return { put: function (key, value) { map[key] = value; }, get: function (key) { return map[key]; }, remove: function (key) { delete map[key]; } };

4 The object produced by make_map can only use strings as keys. Sometimes we want to use other values as keys. In those cases, we want a better_map that looks just like map, but can handler a larger set of keys.

5 make_better_map var make_better_map = function () { var keys = [], values = [], find = function (key) { var i = keys.indexOf(key); return i < 0 ? keys.length : i; }; return { put: function (key, value) { var i = find(key); keys[i] = key; values[i] = value; }, get: function (key) { return values[find(key)]; }, remove: function (key) { var i = keys.indexOf(key); if (i >= 0) { keys.splice(i, 1); values.splice(i, 1); } };

6 Correspondence between objects and functions We can make a function that acts much like a map object. my_fun_map = make_fun_map(); my_fun_map('put', 'language', 'JavaScript'); alert(my_fun_map('get', 'language'));

7 make_fun_map var make_fun_map = function () { var keys = [], values = [], find = function (key) { var i = keys.indexOf(key); return i < 0 ? keys.length: i; }; return function (method, key, value) { var i, if (method === 'put') { i = find(key); keys[i] = key; values[i] = value; return; } else if (method === 'get') { return values[find(key)]; } else if (method === 'remove') { i = keys.indexOf(key); if (i >= 0) { keys.splice(i, 1); values.splice(i, 1); } };

8 Assignment Modify deck.js to produce a function that can perform 'shuffle', 'deal', 'remove', and 'size'.


Download ppt "JavaScript: The First Parts Part Eight Douglas Crockford Yahoo! Inc."

Similar presentations


Ads by Google