OMG!!! Seriously, you are writing SDK code and you don't know what's the difference between using `in' operator and calling a method defined on Object.prototype is?
First of all, they are testing for different things. `in' is testing for a key in a collection, key may or may not be a property, for example, a key in the Dictionary is not a property. Object.prototype.hasOwnProperty() is a slow to resolve and slow to execute function that will resolve the property (which involves verifying access permissions and whether the enumeration of the property is allowed). It is on average 4 times slower then `in' if it is used to do the same thing. Further more, whilst `in' has several legitimate use cases (such as verifying whether the collection contains the key), Object.prototype.hasOwnProperty() is usually an indication that you are doing something wrong. For example, you did not define an interface to abstract different object types for similar access, or you created a blob class, you don't want to import because of too many dependencies - modular architecture failure. Further more, it isn't safe to use this function in mission-critical code, because someone can easily redefine it for __every__ object in the project, since it's defined on the prototype, and by redefining it may intercept some of your data you passed to this function.