News for hackers. Stuff that matters.
Re:KindScript – A kinder JavaScript experience by ankjevel on Sunday March 20, 2016 @11:10AM (#11323211)
Why would you like to add anything to the __proto__ property? One way would be to write, like this:

  {
    const m = {}

    m.__alpha__ = 10
    m.__bravo__ = 20
    m.__defineGetter__('__proto__', () => 30)
    
    Reflect.ownKeys(m).forEach(key => console.log(key))
  }
EDIT: I can't format ...
Re:KindScript – A kinder JavaScript experience by amelius on Sunday March 20, 2016 @11:22AM (#11323255)
To make my point clear, here is a question. What is wrong with the following function that counts the number of unique strings in a list of strings?

    function count_unique_strings(l)
    {
        var m = {};

        l.forEach(function(s)
        {
            m[s] = true;
        });

        var count = 0;
        for(var k in m) ++count;

        return count;
    }
To see why this function is incorrect, run it with the following input:

    console.log(count_unique_strings(["alpha", "bravo", "bravo", "charlie"]));
    console.log(count_unique_strings(["alpha", "bravo", "bravo", "__proto__"]));
Re:KindScript – A kinder JavaScript experience by dchest on Sunday March 20, 2016 @12:12PM (#11323425)
What is wrong with the following function

The implementation is wrong: you're using Object when you want to use Map. Object is not suitable for this, and seems like you know it, and it's in language specs.

Re:KindScript – A kinder JavaScript experience by amelius on Sunday March 20, 2016 @12:36PM (#11323529)
Yes, I stated beforehand that the implementation is wrong. My point is that it is not obvious from the implementation (and certainly not for beginners).