-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path09.extend.html
71 lines (56 loc) · 1.57 KB
/
09.extend.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
// var o = {name: 'aa'}
// function myCreate (p) {
// var ins
// function F () {}
// F.prototype = p
// ins = new F()
// return ins
// }
// var p = myCreate(o)
// console.log(p.name) //aa
// class MyDate extends Date {
// test() {
// return this.getTime()
// }
// }
// let d = new MyDate()
// console.log(d.test())
// function MyDate () { }
// var myDate = Object.create(Date)
// var d = new myDate()
// console.log(d.getTime())
console.log(Date)
var d = new Date()
function MyDate () {}
MyDate.prototype = Object.create(Date.prototype)
MyDate.prototype.constructor = MyDate
var d = new MyDate()
// console.log(typeof d)
// console.log(d instanceof Date)
// console.log(d.__proto__ === Date.prototype)
// console.log(Date.prototype.constructor === Date)
// var dd = new Date()
// console.log(dd.getTime())
// console.log(d.getTime())// Uncaught TypeError: this is not a Date object.
//要调用Date上方法的实例对象必须通过Date构造出来,否则不允许调用Date的方法
Object.setPrototypeOf = Object.setPrototypeOf || function (obj, proto) {
obj.__proto__ = proto
return obj
}
function DateTest () {
var dataInstance = new (Function.prototype.bind.call(Date, [Date].concat(Array.prototype.slice.call(arguments))))()
Object.setPrototypeOf(dataInstance, Date.prototype)
return dataInstance
}
var ddd = new DateTest()
console.log(ddd.getTime())
</script>
</body>
</html>