On 2014-05-23, 9:00 AM, James Hugman wrote:
Hi, mfd

As another datapoint: the Obj-C category `NSObject+NSJSON` treats nulls
as a separate object type: `NSNull`, and all instances are
`NSNull.null`. Instances of JS's undefined is represented with the
equivalent of Java's `null`: `nil`. This is only possible because of
Objective-C's loose typing, and will not transliterate into Java.

This is, in fact, what JSONObject does -- there's JSONObject.NULL. It's awful.

Amongst my unsolicited opinions are these:

  * code which changes behaviours based on a difference between
`undefined` and `null` should be avoided. Better yet, it should be
shunned or sent for re-education.

I agree, but JS encourages null and undefined to be treated as equivalent; and we have a lot of existing JS that does this. I am seeing a badly handled message PrivateBrowsing:Data that does this very explicitly; that's part of what sent me down this rabbit-hole.

  * checking if a key exists if different to checking if the value is
`null`. JSONObject has a method `has` which does this. Javans almost
never use the `Map.containsKey`, but if we really need to distinguish
between JS `null` and `undefined`, then we should be using this more.

I agree, and I highlighted the fact that NativeJSObject.isNull does not exist on the ticket. I'm not sure if .containsKey is there either.

Nick
_______________________________________________
mobile-firefox-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/mobile-firefox-dev

Reply via email to