PSA: use only #2.
If you *really* need it, put a warning comment for #1.
Avoid #3 (unless you're generating code), and for #4 use Number rather than an easy-to-miss unary operator.
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.