- From: Erik Arvidsson <erik@eae.net>
- Date: Wed, 07 Sep 2005 01:15:54 +0200
You can get has(token) to be constant, O(1), by using a hash here. add and remove will remain linear as long as a copy is required. You are really misusing new here. You never return an object of type DOMTokenString. Since all your methods are linear and return a new string you might as well implement them on the String prototype object. String.prototype.has = function (s) { // TODO: Needs to validate s return RegExp("(^|\\s+)" + s + "(\\s+|$)", "g").test(this); }; String.prototype.add = function (s) { // TODO: Needs to validate s // This should check that we don't have this token already return this + " " + s; }; String.prototype.remove = function (s) { // TODO: Needs to validate s return this.replace(RegExp("(^|\\s+)" + s + "(\\s+|$)", "g"), ""); }; Now native strings in JS implement the DOMTokenString interface ;-) If you want a mutable object then we cannot extend String (as you said). Lachlan Hunt wrote: > s = s.add("foo"); // returns "foo bar foo" This should not add another foo > s = s.add("baz quux") // returns "foo bar foo baz quux" Shouldn't this raise an exception? erik
Received on Tuesday, 6 September 2005 16:15:54 UTC