1 实例对象与new 命令
1.1 构造函数
-
-
- 函数体内部使用了 this 关键字,代表了所要生成的对象实例。 -
- 生成对象的时候,必须使用 new 命令 -
- 函数名首字母大写,以示区别。 -
1.2 new 命令
-
-
- 执行构造函数,返回一个对象实例。 -
1.2.1 new 原理
1 | graph TB |
Classes
1 Class-Like structures in ecma5
1 | // property |
- 展开全文 >>
+ 展开全文 >>
@@ -896,19 +888,19 @@
+
- ECMA6 类
+ ECMA5 CALL APPLY 模拟
-
+
@@ -916,9 +908,27 @@
- Classes
1 Class-Like structures in ecma5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// property
function PersonType(name){
this.name = name;
}
// methods: be assigned to the prototype
// all instances of the object share the same function
PersonType.prototype.sayName = function(){
console.log(this.name);
}
let person = new PersonType('chochi');
person.sayName();
// person is a instance of obeject and PersonType
+ 概念
+- 每个函数都包括两个非继承而来的方法 apply call
+- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
+- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
+
+
+- apply()
+- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。
+
+
+- call()
+- 参数必须逐个列出来
+
+
+
+call 模拟
+- 参数一一对应
+
+1
2
3
4
5
6
7
8
Function.prototype.myCall = function(_context){
let context = _context || window;// null -> window
context.fn = this;
let args = [].slice.call(arguments,1,arguments.length);
let result = !args ?context.fn():context.fn(...args);
delete context.fn;
return result;
}
- more >>
+ more >>
@@ -953,7 +963,7 @@ Class
@@ -983,19 +993,19 @@ Class
-
+
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
-
+
@@ -1003,27 +1013,17 @@
- 概念
-- 每个函数都包括两个非继承而来的方法 apply call
-- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
-- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
-
-
-- apply()
-- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。
-
-
-- call()
-
-call 模拟
-- 参数一一对应
+1.2 new 命令
+- 执行构造函数,返回一个对象实例。
-1
2
3
4
5
6
7
8
Function.prototype.myCall = function(_context){
let context = _context || window;// null -> window
context.fn = this;
let args = [].slice.call(arguments,1,arguments.length);
let result = !args ?context.fn():context.fn(...args);
delete context.fn;
return result;
}
+1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
- more >>
+ more >>
@@ -1058,7 +1058,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 1734cf6..b358667 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -25,7 +25,7 @@
diff --git a/showcase/showcase.html b/showcase/showcase.html
index 64ea533..6a80042 100644
--- a/showcase/showcase.html
+++ b/showcase/showcase.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/Ajax/ajax.html b/showcase/works/Ajax/ajax.html
index 05b8068..4b58427 100644
--- a/showcase/works/Ajax/ajax.html
+++ b/showcase/works/Ajax/ajax.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/Ajax/readme.html b/showcase/works/Ajax/readme.html
index 78628d0..339e271 100644
--- a/showcase/works/Ajax/readme.html
+++ b/showcase/works/Ajax/readme.html
@@ -26,7 +26,7 @@
diff --git a/showcase/works/BallGame/BallGame.html b/showcase/works/BallGame/BallGame.html
index 3683697..735c710 100644
--- a/showcase/works/BallGame/BallGame.html
+++ b/showcase/works/BallGame/BallGame.html
@@ -32,7 +32,7 @@
diff --git a/showcase/works/IamgeSlider/IamgeSlider.html b/showcase/works/IamgeSlider/IamgeSlider.html
index f1ac3e6..fdfbf6a 100644
--- a/showcase/works/IamgeSlider/IamgeSlider.html
+++ b/showcase/works/IamgeSlider/IamgeSlider.html
@@ -39,7 +39,7 @@
diff --git a/showcase/works/flex/flex.html b/showcase/works/flex/flex.html
index 54dbc4d..6f9a620 100644
--- a/showcase/works/flex/flex.html
+++ b/showcase/works/flex/flex.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/flex/readme.html b/showcase/works/flex/readme.html
index 3372597..f75ce60 100644
--- a/showcase/works/flex/readme.html
+++ b/showcase/works/flex/readme.html
@@ -29,7 +29,7 @@
diff --git a/tags/JS/index.html b/tags/JS/index.html
index 9d7ac1e..777a9cb 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -25,7 +25,7 @@
@@ -498,14 +498,14 @@
- ECMA5 面向对象编程
+ ECMA6 类
@@ -547,14 +547,14 @@
- ECMA6 类
+ ECMA5 CALL APPLY 模拟
@@ -596,14 +596,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
diff --git a/tags/JS/page/2/index.html b/tags/JS/page/2/index.html
index 2c46e48..d7c4a15 100644
--- a/tags/JS/page/2/index.html
+++ b/tags/JS/page/2/index.html
@@ -25,7 +25,7 @@
- ECMA6 类 + ECMA5 CALL APPLY 模拟
- + @@ -916,9 +908,27 @@
- Classes
1 Class-Like structures in ecma5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// property
function PersonType(name){
this.name = name;
}
// methods: be assigned to the prototype
// all instances of the object share the same function
PersonType.prototype.sayName = function(){
console.log(this.name);
}
let person = new PersonType('chochi');
person.sayName();
// person is a instance of obeject and PersonType
+ 概念
+- 每个函数都包括两个非继承而来的方法 apply call
+- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
+- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
+
+
+- apply()
+- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。
+
+
+- call()
+- 参数必须逐个列出来
+
+
+
+call 模拟
+- 参数一一对应
+
+1
2
3
4
5
6
7
8
Function.prototype.myCall = function(_context){
let context = _context || window;// null -> window
context.fn = this;
let args = [].slice.call(arguments,1,arguments.length);
let result = !args ?context.fn():context.fn(...args);
delete context.fn;
return result;
}
- more >>
+ more >>
@@ -953,7 +963,7 @@ Class
@@ -983,19 +993,19 @@ Class
-
+
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
-
+
@@ -1003,27 +1013,17 @@
- 概念
-- 每个函数都包括两个非继承而来的方法 apply call
-- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
-- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
-
-
-- apply()
-- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。
-
-
-- call()
-
-call 模拟
-- 参数一一对应
+1.2 new 命令
+- 执行构造函数,返回一个对象实例。
-1
2
3
4
5
6
7
8
Function.prototype.myCall = function(_context){
let context = _context || window;// null -> window
context.fn = this;
let args = [].slice.call(arguments,1,arguments.length);
let result = !args ?context.fn():context.fn(...args);
delete context.fn;
return result;
}
+1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
- more >>
+ more >>
@@ -1058,7 +1058,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 1734cf6..b358667 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -25,7 +25,7 @@
diff --git a/showcase/showcase.html b/showcase/showcase.html
index 64ea533..6a80042 100644
--- a/showcase/showcase.html
+++ b/showcase/showcase.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/Ajax/ajax.html b/showcase/works/Ajax/ajax.html
index 05b8068..4b58427 100644
--- a/showcase/works/Ajax/ajax.html
+++ b/showcase/works/Ajax/ajax.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/Ajax/readme.html b/showcase/works/Ajax/readme.html
index 78628d0..339e271 100644
--- a/showcase/works/Ajax/readme.html
+++ b/showcase/works/Ajax/readme.html
@@ -26,7 +26,7 @@
diff --git a/showcase/works/BallGame/BallGame.html b/showcase/works/BallGame/BallGame.html
index 3683697..735c710 100644
--- a/showcase/works/BallGame/BallGame.html
+++ b/showcase/works/BallGame/BallGame.html
@@ -32,7 +32,7 @@
diff --git a/showcase/works/IamgeSlider/IamgeSlider.html b/showcase/works/IamgeSlider/IamgeSlider.html
index f1ac3e6..fdfbf6a 100644
--- a/showcase/works/IamgeSlider/IamgeSlider.html
+++ b/showcase/works/IamgeSlider/IamgeSlider.html
@@ -39,7 +39,7 @@
diff --git a/showcase/works/flex/flex.html b/showcase/works/flex/flex.html
index 54dbc4d..6f9a620 100644
--- a/showcase/works/flex/flex.html
+++ b/showcase/works/flex/flex.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/flex/readme.html b/showcase/works/flex/readme.html
index 3372597..f75ce60 100644
--- a/showcase/works/flex/readme.html
+++ b/showcase/works/flex/readme.html
@@ -29,7 +29,7 @@
diff --git a/tags/JS/index.html b/tags/JS/index.html
index 9d7ac1e..777a9cb 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -25,7 +25,7 @@
@@ -498,14 +498,14 @@
- ECMA5 面向对象编程
+ ECMA6 类
@@ -547,14 +547,14 @@
- ECMA6 类
+ ECMA5 CALL APPLY 模拟
@@ -596,14 +596,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
diff --git a/tags/JS/page/2/index.html b/tags/JS/page/2/index.html
index 2c46e48..d7c4a15 100644
--- a/tags/JS/page/2/index.html
+++ b/tags/JS/page/2/index.html
@@ -25,7 +25,7 @@
Classes
1 Class-Like structures in ecma5
1 | // property |
概念
-
+
- 每个函数都包括两个非继承而来的方法 apply call +
- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值 +
- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
+
-
+
- apply()
-
+
- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。 +
+ - call()
-
+
- 参数必须逐个列出来 +
+
call 模拟
-
+
- 参数一一对应 +
1 | Function.prototype.myCall = function(_context){ |
Class
@@ -983,19 +993,19 @@Class
-
+
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
-
+
@@ -1003,27 +1013,17 @@
- 概念
-- 每个函数都包括两个非继承而来的方法 apply call
-- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
-- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
-
-
-- apply()
-- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。
-
-
-- call()
-
-call 模拟
-- 参数一一对应
+1.2 new 命令
+- 执行构造函数,返回一个对象实例。
-1
2
3
4
5
6
7
8
Function.prototype.myCall = function(_context){
let context = _context || window;// null -> window
context.fn = this;
let args = [].slice.call(arguments,1,arguments.length);
let result = !args ?context.fn():context.fn(...args);
delete context.fn;
return result;
}
+1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
- more >>
+ more >>
@@ -1058,7 +1058,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 1734cf6..b358667 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -25,7 +25,7 @@
diff --git a/showcase/showcase.html b/showcase/showcase.html
index 64ea533..6a80042 100644
--- a/showcase/showcase.html
+++ b/showcase/showcase.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/Ajax/ajax.html b/showcase/works/Ajax/ajax.html
index 05b8068..4b58427 100644
--- a/showcase/works/Ajax/ajax.html
+++ b/showcase/works/Ajax/ajax.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/Ajax/readme.html b/showcase/works/Ajax/readme.html
index 78628d0..339e271 100644
--- a/showcase/works/Ajax/readme.html
+++ b/showcase/works/Ajax/readme.html
@@ -26,7 +26,7 @@
diff --git a/showcase/works/BallGame/BallGame.html b/showcase/works/BallGame/BallGame.html
index 3683697..735c710 100644
--- a/showcase/works/BallGame/BallGame.html
+++ b/showcase/works/BallGame/BallGame.html
@@ -32,7 +32,7 @@
diff --git a/showcase/works/IamgeSlider/IamgeSlider.html b/showcase/works/IamgeSlider/IamgeSlider.html
index f1ac3e6..fdfbf6a 100644
--- a/showcase/works/IamgeSlider/IamgeSlider.html
+++ b/showcase/works/IamgeSlider/IamgeSlider.html
@@ -39,7 +39,7 @@
diff --git a/showcase/works/flex/flex.html b/showcase/works/flex/flex.html
index 54dbc4d..6f9a620 100644
--- a/showcase/works/flex/flex.html
+++ b/showcase/works/flex/flex.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/flex/readme.html b/showcase/works/flex/readme.html
index 3372597..f75ce60 100644
--- a/showcase/works/flex/readme.html
+++ b/showcase/works/flex/readme.html
@@ -29,7 +29,7 @@
diff --git a/tags/JS/index.html b/tags/JS/index.html
index 9d7ac1e..777a9cb 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -25,7 +25,7 @@
@@ -498,14 +498,14 @@
- ECMA5 面向对象编程
+ ECMA6 类
@@ -547,14 +547,14 @@
- ECMA6 类
+ ECMA5 CALL APPLY 模拟
@@ -596,14 +596,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
diff --git a/tags/JS/page/2/index.html b/tags/JS/page/2/index.html
index 2c46e48..d7c4a15 100644
--- a/tags/JS/page/2/index.html
+++ b/tags/JS/page/2/index.html
@@ -25,7 +25,7 @@
- ECMA5 CALL APPLY 模拟 + ECMA5 面向对象编程
- + @@ -1003,27 +1013,17 @@
- 概念
-- 每个函数都包括两个非继承而来的方法 apply call
-- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值
-- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
-
-
-- apply()
-- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。
-
-
-- call()
-
-call 模拟
-- 参数一一对应
+1.2 new 命令
+- 执行构造函数,返回一个对象实例。
-1
2
3
4
5
6
7
8
Function.prototype.myCall = function(_context){
let context = _context || window;// null -> window
context.fn = this;
let args = [].slice.call(arguments,1,arguments.length);
let result = !args ?context.fn():context.fn(...args);
delete context.fn;
return result;
}
+1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
- more >>
+ more >>
@@ -1058,7 +1058,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 1734cf6..b358667 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -25,7 +25,7 @@
diff --git a/showcase/showcase.html b/showcase/showcase.html
index 64ea533..6a80042 100644
--- a/showcase/showcase.html
+++ b/showcase/showcase.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/Ajax/ajax.html b/showcase/works/Ajax/ajax.html
index 05b8068..4b58427 100644
--- a/showcase/works/Ajax/ajax.html
+++ b/showcase/works/Ajax/ajax.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/Ajax/readme.html b/showcase/works/Ajax/readme.html
index 78628d0..339e271 100644
--- a/showcase/works/Ajax/readme.html
+++ b/showcase/works/Ajax/readme.html
@@ -26,7 +26,7 @@
diff --git a/showcase/works/BallGame/BallGame.html b/showcase/works/BallGame/BallGame.html
index 3683697..735c710 100644
--- a/showcase/works/BallGame/BallGame.html
+++ b/showcase/works/BallGame/BallGame.html
@@ -32,7 +32,7 @@
diff --git a/showcase/works/IamgeSlider/IamgeSlider.html b/showcase/works/IamgeSlider/IamgeSlider.html
index f1ac3e6..fdfbf6a 100644
--- a/showcase/works/IamgeSlider/IamgeSlider.html
+++ b/showcase/works/IamgeSlider/IamgeSlider.html
@@ -39,7 +39,7 @@
diff --git a/showcase/works/flex/flex.html b/showcase/works/flex/flex.html
index 54dbc4d..6f9a620 100644
--- a/showcase/works/flex/flex.html
+++ b/showcase/works/flex/flex.html
@@ -29,7 +29,7 @@
diff --git a/showcase/works/flex/readme.html b/showcase/works/flex/readme.html
index 3372597..f75ce60 100644
--- a/showcase/works/flex/readme.html
+++ b/showcase/works/flex/readme.html
@@ -29,7 +29,7 @@
diff --git a/tags/JS/index.html b/tags/JS/index.html
index 9d7ac1e..777a9cb 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -25,7 +25,7 @@
@@ -498,14 +498,14 @@
- ECMA5 面向对象编程
+ ECMA6 类
@@ -547,14 +547,14 @@
- ECMA6 类
+ ECMA5 CALL APPLY 模拟
@@ -596,14 +596,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
diff --git a/tags/JS/page/2/index.html b/tags/JS/page/2/index.html
index 2c46e48..d7c4a15 100644
--- a/tags/JS/page/2/index.html
+++ b/tags/JS/page/2/index.html
@@ -25,7 +25,7 @@
概念
-
-
- 每个函数都包括两个非继承而来的方法 apply call -
- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值 -
- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
-
-
-
- apply()
-
-
- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。 -
- - call() -
call 模拟
-
-
- 参数一一对应 +
- 执行构造函数,返回一个对象实例。
1.2 new 命令
-
+
1 | Function.prototype.myCall = function(_context){ |
1.2.1 new 原理
1 | graph TB |