Increase the counter every time you add a new item to the box .
function Box() { var length = 0; var items = {}; this.add = function(k, v) { if (!(k in items)) length++;
This version correctly handles adding and removing elements with any name and provides read-only access to the length property. Using:
var box = new Box(); box.add("a", 1); box.add("a", 2); // overwrite box.add("b", "whatever"); box.add(null, 3); box.add(undefined, 3); box.add(undefined, 42); box.add("", 41); console.log(box.length); // 5 console.log(box.get(undefined)); // 42 console.log(box.get(null)); // 3 console.log(box.get("")); // 41 box.delete(undefined); box.delete(undefined); box.delete(undefined); box.delete(undefined); box.delete(undefined); box.delete(undefined); box.delete(22); // never was defined console.log(box.length); // 4 console.log(box.get(undefined)); // undefined box.add("length", "33") box.add("items", "jfhsdjkfh"); box.add("length", 77); console.log(box.length); // 6
Wayne burkett
source share