NoScript to the rescue, again.
Most implementations, though, make the assumption that if they get JS info, that info is good. Better to give them wrong/inaccurate/changing JS info than no info.
So, I leave JS on, use some personal plugins to change variables and give them bad data on each request. They won't know and will just get bad fingerprints that are not seen again.
See this comment: https://news.ycombinator.com/item?id=6046810