Allow using `instanceof dayjs` to check, if an object is a `dayjs` instance
Attempts to fix #244.
Hi,
I tried to replace moment with dayjs,but some old code have this condition:
```
if (aMomentDate instanceof moment) {
//do something
}
```
if this meet dayjs, it would be false and the `if` can not be enter.

after I found the problem , I tried this:
```
moment() instanceof moment
//true
```
and this:
```
dayjs() instanceof dayjs
//false
```

So, is it necessary to be fixed?

dayjs() instanceof dayjs = false
diff --git a/docs/en/API-reference.md b/docs/en/API-reference.md
index 5f6779ada..925e26797 100644
--- a/docs/en/API-reference.md
+++ b/docs/en/API-reference.md
@@ -421,6 +421,12 @@ dayjs.isDayjs(dayjs()); // true
 dayjs.isDayjs(new Date()); // false
 ```
 
+The operator `instanceof` works equally well:
+
+```js
+dayjs() instanceof dayjs // true
+```
+
 ## Plugin APIs
 
 ### RelativeTime
diff --git a/src/index.js b/src/index.js
index c3b7530f1..c60b2b809 100644
--- a/src/index.js
+++ b/src/index.js
@@ -384,6 +384,8 @@ class Dayjs {
   }
 }
 
+dayjs.prototype = Dayjs.prototype
+
 dayjs.extend = (plugin, option) => {
   plugin(option, Dayjs, dayjs)
   return dayjs

diff --git a/test/constructor.test.js b/test/constructor.test.js
new file mode 100644
index 000000000..b14b2fec4
--- /dev/null
+++ b/test/constructor.test.js
@@ -0,0 +1,18 @@
+import MockDate from 'mockdate'
+import dayjs from '../src'
+
+beforeEach(() => {
+  MockDate.set(new Date())
+})
+
+afterEach(() => {
+  MockDate.reset()
+})
+
+it('supports instanceof dayjs', () => {
+  expect(dayjs() instanceof dayjs).toBeTruthy()
+})
+
+it('does not break isDayjs', () => {
+  expect(dayjs.isDayjs(dayjs())).toBeTruthy()
+})

{"test/constructor.test.js": {"run": "NONE", "test": "FAIL", "fix": "PASS"}}
{"test/plugin/isLeapYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/get-set.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/query.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/comparison.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/advancedFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isSameOrBefore.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale/keys.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/locale.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/utils.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/relativeTime.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/parse.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/customParseFormat.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/manipulate.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/buddhistEra.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isSameOrAfter.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/weekOfYear.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}, "test/plugin/isBetween.test.js": {"run": "PASS", "test": "PASS", "fix": "PASS"}}
{"test/constructor.test.js": {"run": "NONE", "test": "FAIL", "fix": "PASS"}}
{"passed_count": 18, "failed_count": 1, "skipped_count": 0, "passed_tests": ["test/plugin/isLeapYear.test.js", "test/get-set.test.js", "test/query.test.js", "test/utils.test.js", "test/locale.test.js", "test/plugin.test.js", "test/parse.test.js", "test/plugin/relativeTime.test.js", "test/comparison.test.js", "test/plugin/isSameOrBefore.test.js", "test/plugin/customParseFormat.test.js", "test/manipulate.test.js", "test/plugin/buddhistEra.test.js", "test/plugin/advancedFormat.test.js", "test/locale/keys.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/isBetween.test.js"], "failed_tests": ["test/display.test.js"], "skipped_tests": []}
{"passed_count": 18, "failed_count": 2, "skipped_count": 0, "passed_tests": ["test/plugin/isLeapYear.test.js", "test/plugin.test.js", "test/locale.test.js", "test/utils.test.js", "test/query.test.js", "test/plugin/relativeTime.test.js", "test/parse.test.js", "test/comparison.test.js", "test/get-set.test.js", "test/plugin/isSameOrBefore.test.js", "test/locale/keys.test.js", "test/plugin/customParseFormat.test.js", "test/plugin/advancedFormat.test.js", "test/manipulate.test.js", "test/plugin/buddhistEra.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/isBetween.test.js"], "failed_tests": ["test/display.test.js", "test/constructor.test.js"], "skipped_tests": []}
{"passed_count": 19, "failed_count": 1, "skipped_count": 0, "passed_tests": ["test/plugin.test.js", "test/get-set.test.js", "test/plugin/advancedFormat.test.js", "test/plugin/isSameOrBefore.test.js", "test/locale/keys.test.js", "test/utils.test.js", "test/plugin/relativeTime.test.js", "test/parse.test.js", "test/constructor.test.js", "test/plugin/isSameOrAfter.test.js", "test/plugin/weekOfYear.test.js", "test/plugin/isLeapYear.test.js", "test/comparison.test.js", "test/query.test.js", "test/locale.test.js", "test/plugin/customParseFormat.test.js", "test/plugin/buddhistEra.test.js", "test/manipulate.test.js", "test/plugin/isBetween.test.js"], "failed_tests": ["test/display.test.js"], "skipped_tests": []}