Det er meget sjovt med Crockford, der som bekendt står bag JSON. Hans første version af en JS-implementering
json.js - hvis to metoder han foreslog til optagelse i en tidligere JavaScript version - indeholdt et par oplagte JS-brølere.
Dels prototypede han på
object Object, hvilket der er udbredt om koncensus om er en no-go. Det grundlæggende object bør ikke 'forurenes' med uvedkommende properties/metoder.
Dels brugte han
eval, som er JavaScripts tungeste funktion, og som udgør en alvorlig sikkerhedsrisiko. En funktion, han advarer kraftigt imod i sit foredrag i videoen.
Han deprecatede senere denne version på opfordring fra et ret samlet webcommunity og afløste den med
json2.js, som dog stadig anvender
eval.
Selvom han endnu ikke har deprecated
json2.js, har han udgivet
json_parse.js, der parser en JSON streng og opretter et JS-object uden brug af
eval.
Han er et meget godt eksempel på, at selv hos seriøse og meget vidende programmører kan man blive ledt slemt på vildspor. Det siger lidt om, hvad man kan forvente fra folk, der ikke når Crockford til (undersiden af) skosålerne. Og det gælder desværre for langt de fleste, der skriver om JavaScript og DOM :o|
PS: Er man specielt interesseret i JSON, kan jeg anbefale at udskifte
json2.js's
JSON.parse ud med funktionen
jsonParse fra Mike Samuel's
json_sans_eval.js. Den er langt hurtigere og ligeså sikker - men validerer ikke JSON strengens velformethed. You can't win 'em all! =)
Alle filerne kan findes på
Crockford's site. Scroll ned til JavaScript.