Fix the class context validation #43
Merged
+31
−10
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue
Context equality protection is indeed useful when you want to protect the same function from running on two distinct instances, as described in #8. However, equality isn't always expected. Here's an example:
In this case, I want to operate a single debounced function that will shared between the event listener and resize observer. However, when the function gets invoked, it receives different contexts that lead to the exception:

However, those contexts come from totally different classes and don't violate the issue described in #8.
Changes Made
Additionally to the context check, I also added the prototype equality check. That will help to dismiss false exceptions when the context differs between instances of unrelated classes.