-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patha.function.html
More file actions
66 lines (51 loc) · 1.05 KB
/
a.function.html
File metadata and controls
66 lines (51 loc) · 1.05 KB
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
// foo();
// var a = true;
// if (a) {
// function foo() {
// console.log('a')
// }
// } else {
// console.log('b');
// }
// function foo() {
// var a = 0;
// function b() { console.log('b'); }
// }
// foo();
// b();
function mNew() {
var obj = Object.create(null),
Constructor = [].shift.call(arguments);
obj.__proto__ = Constructor.prototype;
console.log(arguments);
var res = Constructor.apply(obj, arguments);
return typeof res === 'object' ? res : obj;
}
Function.prototype.apply2 = function(ctx, args) {
var arr = [],
ctx = ctx || window;
ctx.fn = this;
for (var i = 0, l = args.length; i++) {
arr.push("args["+ i +"]");
}
arr = arr.join(',');
var res = eval("ctx.fn("+ arr +")");
delete ctx.fn;
return res;
}
function Person(name) {
this.name = name;
}
var p1 = mNew(Person, 'bear');
console.log(p1);
</script>
</body>
</html>