From the MDN docs for the standard setPrototypeOf function as well as the non-standard __proto__ property:
Mutating the [[Prototype]] of an
Yes .prototype= is just as bad, hence the wording "no matter how it is accomplished". prototype is a pseudo object for extending the functionality at the class level. Its dynamic nature slows down script execution. Adding a function on the instance level, on the other hand, incurs far less overhead.