There have been multiple accounts created with the sole purpose of posting advertisement posts or replies containing unsolicited advertising.

Accounts which solely post advertisements, or persistently post them may be terminated.

skullgiver ,
@skullgiver@popplesburger.hilciferous.nl avatar

The npm package flip-text is the closest that I know of:


<span style="color:#323232;">const flip = require('flip-text');
</span><span style="color:#323232;">
</span><span style="color:#323232;">const str = "dobo";
</span><span style="color:#323232;">const flippedStr = flip(str);
</span><span style="color:#323232;">
</span><span style="color:#323232;">console.log(flippedStr); // Output: "qoqo"
</span>

However, with great libraries like is-thirteen I’m sure JavaScript will some day gain a proper flipping library.

CanadaPlus ,

Also, it should turn an error into an empty but successful call. /s

hydroptic OP ,

Calling reverse() on a function should return its inverse

socsa ,

Be the operator overload you wish to see in the world

BaumGeist ,

<span style="color:#323232;">"☹️".reverse() == "☹️"
</span>
hydroptic OP ,

You’re no fun

BaumGeist ,

Look closer at the beauty mark, I flipped the emoji

AllNewTypeFace ,
@AllNewTypeFace@leminal.space avatar

Then “b” backwards would have to be “d”

hydroptic OP ,

“E”.reverse() == “∃”

TCB13 ,
@TCB13@lemmy.world avatar

Today I found out that this is valid JS:


<span style="color:#323232;">const someString = "test string";
</span><span style="color:#323232;">console.log(someString.toString());
</span>
skullgiver ,
@skullgiver@popplesburger.hilciferous.nl avatar

I dint know many OO languages that don’t have a useless toString on string types. It mostly seems to be a result of using a generic string-able type that’s implemented to add toString() in a standardised way.

Calling toString on a string is practically a no-op anyway.

TCB13 ,
@TCB13@lemmy.world avatar

I dint know many OO languages that don’t have a useless toString on string types

Okay, fair enough. Guess I never found about it because I never had to do it… JS also allows for “test string”.toString() directly, not sure how it goes in other languages.

skullgiver , (edited )
@skullgiver@popplesburger.hilciferous.nl avatar

Java would be “test string”.toString(). C# has “test string”.ToString(). Python has str(“test string”) (as str() is Python’s toString equivalent). Rust has String::from(“test string”).to_string().

That’s just from the top of my head. I’m sure there’s more.

Edit: actually, I think Rust’s to_string() may not be entirely useless, I think it may be used as a consuming placeholder for clone()? Not sure how that would be useful, but it’s not a complete no-op at least.

tmat256 ,

It’s also incredibly useful as a failsafe in a helper method where you need the argument to be a string but someone might pass in something that is sort of a string. Lets you be a little more flexible in how your method gets called

hydroptic OP ,

I dint know many OO languages that don’t have a useless toString on string types.

Well, that’s just going to be one of those “it is what it is” things in an OO language if your base class has a toString()-equivalent. Sure, it’s probably useless for a string, but if everything’s an object and inherits from some top-level Object class with a toString() method, then you’re going to get a toString() method in strings too. You’re going to get a toString() in everything; in JS even functions have a toString() (the output of which depends on the implementation):

https://sopuli.xyz/pictrs/image/09319807-5d0a-4a50-ae00-021a69109f92.webp

In a dynamically typed language, if you know that everything can be turned into a string with toString() (or the like), then you can just call that method on any value you have and not have to worry about whether it’ll hurl at runtime because eg. Strings don’t have a toString because it’d technically be useless.

skullgiver ,
@skullgiver@popplesburger.hilciferous.nl avatar

Same is true for JavaScript’s namesake, Java; Object has a toString method, so everything but primitives (int, long, etc.) must have a toString method (and primitives sort of have one too in a roundabout way).

I think JavaScript’s toString also serves another function, namely to have some form of fallback when doing operations on what should be incompatible types. [] + “”, for instance; JavaScript will call toString() to do type conversion when the nearest matching type is a String.

hydroptic OP , (edited )

https://sopuli.xyz/pictrs/image/2d5316ef-c873-4f61-a6e9-021cb7fe1209.webp

Everything that’s an Object is going to either inherit Object.prototype.toString() (mdn) or provide its own implementation. Like I said in another comment, even functions have a toString() because they’re also objects.

A String is an Object, so it’s going to have a toString() method. It doesn’t inherit Object’s implementation, but provides one that’s sort of a no-op / identity function but not quite.

So, the thing is that when you say const someString = “test string”, you’re not actually creating a new String object instance and assigning it to someString, you’re creating a string (lowercase s!) primitive and assigning it to someString:

https://sopuli.xyz/pictrs/image/6687aa17-d750-41c9-ab7f-e8930375a9e6.webp

Compare this with creating a new String(“bla”):

https://sopuli.xyz/pictrs/image/ca5e8b71-ab4d-4788-aee7-f069041963ad.webp

In Javascript, primitives don’t actually have any properties or methods, so when you call someString.toString() (or call any other method or access any property on someString), what happens is that someString is coerced into a String instance, and then toString() is called on that. Essentially it’s like going new String(someString).toString().

Now, what String.prototype.toString() (mdn) does is it returns the underlying string primitive and not the String instance itself:

https://sopuli.xyz/pictrs/image/e0a06afa-2f26-492f-8f62-47654d2a9e83.webp

Why? Fuckin beats me, I honestly can’t remember what the point of returning the primitive instead of the String instance is because I haven’t been elbow-deep in Javascript in years, but regardless this is what String’s toString() does. Probably has something to do with coercion logic.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • [email protected]
  • lifeLocal
  • goranko
  • All magazines