1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)/** 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * @fileoverview Some utility functions that don't belong anywhere else in the 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * code. 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) */ 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)var util = (function() { 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) var util = {}; 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) util.object = {}; 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) /** 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * Calls a function for each element in an object/map/hash. 15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * @param obj The object to iterate over. 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * @param f The function to call on every value in the object. F should have 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * the following arguments: f(value, key, object) where value is the value 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * of the property, key is the corresponding key, and obj is the object that 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * was passed in originally. 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) * @param optObj The object use as 'this' within f. 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) */ 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) util.object.forEach = function(obj, f, optObj) { 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 'use strict'; 25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) var key; 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) for (key in obj) { 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (obj.hasOwnProperty(key)) { 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) f.call(optObj, obj[key], key, obj); 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) }; 32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return util; 34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}()); 35