There's a misunderstanding: I mainly use `slice` too. I only use `substr` if I have the length of the substring I need. That's its added value.
What I stopped using altogether is `substring`.
The second technique doesn't actually remove the property: it creates another object without a property. It's widely used if immutability is a constraint.
If you want another proper way, you can use Reflect.deleteProperty.