|
223 | 223 | return k; |
224 | 224 | } |
225 | 225 | function d3_class(ctor, properties) { |
226 | | - try { |
227 | | - for (var key in properties) { |
228 | | - Object.defineProperty(ctor.prototype, key, { |
229 | | - value: properties[key], |
230 | | - enumerable: false |
231 | | - }); |
232 | | - } |
233 | | - } catch (e) { |
234 | | - ctor.prototype = properties; |
| 226 | + for (var key in properties) { |
| 227 | + Object.defineProperty(ctor.prototype, key, { |
| 228 | + value: properties[key], |
| 229 | + enumerable: false |
| 230 | + }); |
235 | 231 | } |
236 | 232 | } |
237 | | - function d3_identity(d) { |
238 | | - return d; |
239 | | - } |
240 | 233 | d3.map = function(object) { |
241 | 234 | var map = new d3_Map(); |
242 | 235 | if (object instanceof d3_Map) object.forEach(function(key, value) { |
|
247 | 240 | function d3_Map() { |
248 | 241 | this._ = Object.create(null); |
249 | 242 | } |
250 | | - var d3_map_proto = "__proto__", d3_map_zero = "\x00", d3_map_prototype = { |
| 243 | + var d3_map_proto = "__proto__", d3_map_zero = "\x00"; |
| 244 | + d3_class(d3_Map, { |
251 | 245 | has: d3_map_has, |
252 | | - get: d3_map_get, |
253 | | - set: d3_map_set, |
| 246 | + get: function(key) { |
| 247 | + return this._[d3_map_escape(key)]; |
| 248 | + }, |
| 249 | + set: function(key, value) { |
| 250 | + return this._[d3_map_escape(key)] = value; |
| 251 | + }, |
254 | 252 | remove: d3_map_remove, |
255 | 253 | keys: d3_map_keys, |
256 | | - values: d3_map_values, |
257 | | - entries: d3_map_entries, |
| 254 | + values: function() { |
| 255 | + var values = []; |
| 256 | + for (var key in this._) values.push(this._[key]); |
| 257 | + return values; |
| 258 | + }, |
| 259 | + entries: function() { |
| 260 | + var entries = []; |
| 261 | + for (var key in this._) entries.push({ |
| 262 | + key: d3_map_unescape(key), |
| 263 | + value: this._[key] |
| 264 | + }); |
| 265 | + return entries; |
| 266 | + }, |
258 | 267 | size: d3_map_size, |
259 | 268 | empty: d3_map_empty, |
260 | | - forEach: d3_map_forEach |
261 | | - }; |
262 | | - d3_class(d3_Map, d3_map_prototype); |
| 269 | + forEach: function(f) { |
| 270 | + for (var key in this._) f.call(this, d3_map_unescape(key), this._[key]); |
| 271 | + } |
| 272 | + }); |
263 | 273 | function d3_map_escape(key) { |
264 | 274 | return (key += "") === d3_map_proto || key[0] === d3_map_zero ? d3_map_zero + key : key; |
265 | 275 | } |
266 | 276 | function d3_map_unescape(key) { |
267 | 277 | return (key += "")[0] === d3_map_zero ? key.slice(1) : key; |
268 | 278 | } |
269 | | - function d3_map_get(key) { |
270 | | - return this._[d3_map_escape(key)]; |
271 | | - } |
272 | | - function d3_map_set(key, value) { |
273 | | - return this._[d3_map_escape(key)] = value; |
274 | | - } |
275 | 279 | function d3_map_has(key) { |
276 | 280 | return d3_map_escape(key) in this._; |
277 | 281 | } |
|
280 | 284 | } |
281 | 285 | function d3_map_keys() { |
282 | 286 | var keys = []; |
283 | | - for (var key in this._) { |
284 | | - keys.push(d3_map_unescape(key)); |
285 | | - } |
| 287 | + for (var key in this._) keys.push(d3_map_unescape(key)); |
286 | 288 | return keys; |
287 | 289 | } |
288 | | - function d3_map_values() { |
289 | | - var entries = []; |
290 | | - for (var key in this._) { |
291 | | - entries.push({ |
292 | | - key: d3_map_unescape(key), |
293 | | - value: this._[key] |
294 | | - }); |
295 | | - } |
296 | | - return entries; |
297 | | - } |
298 | | - function d3_map_entries() { |
299 | | - var entries = []; |
300 | | - for (var key in this._) { |
301 | | - entries.push({ |
302 | | - key: key, |
303 | | - value: this._[key] |
304 | | - }); |
305 | | - } |
306 | | - return entries; |
307 | | - } |
308 | 290 | function d3_map_size() { |
309 | 291 | var size = 0; |
310 | | - for (var key in this._) { |
311 | | - ++size; |
312 | | - } |
| 292 | + for (var key in this._) ++size; |
313 | 293 | return size; |
314 | 294 | } |
315 | 295 | function d3_map_empty() { |
316 | | - for (var key in this._) { |
317 | | - return false; |
318 | | - } |
| 296 | + for (var key in this._) return false; |
319 | 297 | return true; |
320 | 298 | } |
321 | | - function d3_map_forEach(f) { |
322 | | - for (var key in this._) { |
323 | | - f.call(this, d3_map_unescape(key), this._[key]); |
324 | | - } |
325 | | - } |
326 | 299 | d3.nest = function() { |
327 | 300 | var nest = {}, keys = [], sortKeys = [], sortValues, rollup; |
328 | 301 | function map(mapType, array, depth) { |
|
394 | 367 | function d3_Set() { |
395 | 368 | this._ = Object.create(null); |
396 | 369 | } |
397 | | - var d3_set_prototype = { |
| 370 | + d3_class(d3_Set, { |
398 | 371 | has: d3_map_has, |
399 | | - add: d3_set_add, |
| 372 | + add: function(key) { |
| 373 | + this._[d3_map_escape(key)] = true; |
| 374 | + return key; |
| 375 | + }, |
400 | 376 | remove: d3_map_remove, |
401 | 377 | values: d3_map_keys, |
402 | 378 | size: d3_map_size, |
403 | 379 | empty: d3_map_empty, |
404 | | - forEach: d3_set_forEach |
405 | | - }; |
406 | | - d3_class(d3_Set, d3_set_prototype); |
407 | | - function d3_set_add(key) { |
408 | | - this._[d3_map_escape(key)] = true; |
409 | | - return key; |
410 | | - } |
411 | | - function d3_set_forEach(f) { |
412 | | - for (var key in this._) { |
413 | | - f.call(this, d3_map_unescape(key)); |
| 380 | + forEach: function(f) { |
| 381 | + for (var key in this._) f.call(this, d3_map_unescape(key)); |
414 | 382 | } |
415 | | - } |
| 383 | + }); |
416 | 384 | d3.behavior = {}; |
417 | 385 | d3.rebind = function(target, source) { |
418 | 386 | var i = 1, n = arguments.length, method; |
|
1857 | 1825 | }; |
1858 | 1826 | } |
1859 | 1827 | d3.functor = d3_functor; |
| 1828 | + function d3_identity(d) { |
| 1829 | + return d; |
| 1830 | + } |
1860 | 1831 | d3.xhr = d3_xhrType(d3_identity); |
1861 | 1832 | function d3_xhrType(response) { |
1862 | 1833 | return function(url, mimeType, callback) { |
|
0 commit comments