forked from JYB7913/Javascript201707
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path题.html
181 lines (166 loc) · 5.37 KB
/
题.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script type="text/javascript">
// function foo(n) {
// return function (c) {
// n += c;
// console.log(n);
// }
// }
// var ff = foo(2); // foo 形成第一个不销毁栈内存 返回一个内部堆内存地址
// ff(3); // 5
// ff(5); // 10 第一个foo里的 n = 10
//
// foo(1)(9); // 10 foo形成第二个不立即销毁的栈内存 第二个foo里的 n = 10
//
// ff(3); // 13 第一个foo里的 n = 13
//
// ff = foo(3); // foo 形成第三个不销毁的炸内存 第三个foo的 n = 3
// ff(6); // 9 3 + 6
//
// function fn(n){
// function foo(){
// n += n;
// console.log(n);
// }
// return foo;
// }
// var f = fn(5); // n = 5 xxxfff111
// f(); // 10
//
// var f1 = fn(10); // n = 10 xxxfff222
// f1(); // 20
//
// var f2 = fn(5); // n = 5
// f2(); // n+n n = 10
//
// f(); // n + n 20 这是属于第一个fn的内部函数 累加的是第一个fn里 n
//
// f = fn(5); // n = 5 f = xxxfff444
// f(); // n + n 10
//
// f = f1; // f = xxxfff222
// f(); // n + n 40
///////////////////////////////////////////////////////////////////////
// function sum(){
// var num = 10; // 15 20
// return function (){
// num += 5;
// console.log(num);
// }
// }
// var fx = sum();
// fx(); // 15
// var fy = fx;
// fy(); // 20
//
// sum()(); // 15
///////////////////////////////////////////////////////////////////////
// var obj = {
// num : 6,
// fn : (function (){
// var n = 5;
// return function (){
// n += 1;
// console.log(n);
// }
// })()
// };
// obj.fn(); // 6
// obj.fn(); // 7
// var f = obj.fn;
// f(); // 8
// var f1 = f;
// f1(); // 9
// var num = 20; // 60 => 240
// var obj = {
// num: 30, // 120
// fn: (function (num) { // num = 20 => 45
// this.num *= 3;
// num += 15; // 35
// var num = 45; // 45 => 65 => 85
// return function () {
// this.num *= 4;
// num += 20;
// console.log(num);
// }
// })(num)
// };
// var fn = obj.fn;
// fn(); // 65
// obj.fn(); // 85
// console.log(window.num, obj.num); // 240 120
// var num = 1; // 3 5
// var obj = {num: 2}; // 4
// obj.fn = (function (num) { // num = 1 0
// this.num += 2; //
// num--; // num = 0
// return function (n) { // n = 2
// this.num += 2;
// num--; // -1
// console.log(n + ++num); // 2 + 0
// }
// })(this.num);
// var fn = obj.fn;
// fn(1); // 1
// obj.fn(2); // 2
// console.log(num, obj.num); // 5 4
//////////////////////////////////////////////////////////////////////////
// function C1(name) {
// if (name) {
// this.name = name;
// }
// }
// function C2(name) {
// this.name = name;
// }
// function C3(name) {
// this.name = name || 'join';
// }
// C1.prototype.name = 'Tom';
// C2.prototype.name = 'Tom';
// C3.prototype.name = 'Tom';
// console.log(new C1().name + new C2().name + new C3().name);
// function Fn(name) {
// var age = 30;
// this.name = name;
// this.age = age;
// this.say = function () {
// console.log('my name is ' + this.name + ',i can say!');
// }
// }
// Fn.prototype.age = 40;
// Fn.prototype = {
// /*constructor: Fn,*/
// say: function () {
// console.log('my name is ' + this.name + ',i can say!');
// },
// eat: function () {
// console.log('my age is ' + this.age + ',i can eat!');
// }
// };
// Fn.say = function () {
// console.log('my name is ' + this.name + ',i can say!');
// };
// var f1 = new Fn('wang');
// var f2 = new Fn('li');
// console.log(f1.say === f2.say); // false
// console.log(Fn.prototype.say === f2.say); // false
// console.log(Fn.prototype.say === f2.__proto__.say); // true
// console.log(f1.eat === f2.eat); // true
// console.log(Fn.prototype.eat === f2.eat); // true
// f1.say();//->this是f1
// f2.__proto__.say();//->this是f2.__proto__(Fn.prototype)
// Fn.say();//->this是Fn
// f1.eat();//->this是f1
// f1.__proto__.eat();//->this是Fn.prototype
// Fn.prototype.eat();
// Fn.eat();
</script>
</body>
</html>