1 键名
-
-
- 对象的所有键名都是字符串,若键名不符合标识符的条件,则必须加上引号。 -
- 如果使用方运算符,键名必须放在引号里,否则会被当做变量处理。 -
- 数字键可以不加引号,会自动转成字符串。-
1
2
3
4
5
6let obj = { flag: true };
obj[flag] // undefined
obj.flag // true
obj.['flag'] // true
flag ='flag';
obj[flag] // ture
+ - 函数的声明会提升到函数定义时所在的作用域的头部。故同名函数会被后来的函数替代。
- 每个函数都包括两个非继承而来的方法 apply call -
- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值 -
- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
- - apply() -
- call()
-
-
- 参数必须逐个列出来 -
- - 参数一一对应 +
- 执行构造函数,返回一个对象实例。
- this 对象时运行时基于函数的执行环节绑定的,在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。 -
- 匿名函数的执行环节具有全局性,因此this指针对象通常指向window - -
- 使用Array的静态方法 +
- 函数的声明会提升到函数定义时所在的作用域的头部。故同名函数会被后来的函数替代。 +
- 对象的所有键名都是字符串,若键名不符合标识符的条件,则必须加上引号。 +
- 如果使用方运算符,键名必须放在引号里,否则会被当做变量处理。 +
- 数字键可以不加引号,会自动转成字符串。+
1
2
3
4
5
6let obj = { flag: true };
obj[flag] // undefined
obj.flag // true
obj.['flag'] // true
flag ='flag';
obj[flag] // ture - 函数体内部使用了 this 关键字,代表了所要生成的对象实例。 -
- 生成对象的时候,必须使用 new 命令 -
- 函数名首字母大写,以示区别。 +
- 每个函数都包括两个非继承而来的方法 apply call +
- 在特定的作用域中调用函数,实际上等于设置函数体内this对象的值 +
- 看出 call 和 apply 是为了动态改变 this 而出现的
区别
+ - apply()
-
+
- 接受两个参数,第一个是运行函数的作用域,第二个是参数数组,参数数组可以用arrar实例,也可以是arguments对象。 +
+ - call()
-
+
- 参数必须逐个列出来
1.2 new 命令
-
-
- 执行构造函数,返回一个对象实例。 +
+ - 参数一一对应
- 使用Array的静态方法 -
- 使用原型toString方法,返回的字符串第二个词表示构造函数
+
1 概念
-
+
- this 对象时运行时基于函数的执行环节绑定的,在全局函数中,this等于window,而当函数被作为某个对象的方法调用时,this等于那个对象。 +
- 匿名函数的执行环节具有全局性,因此this指针对象通常指向window + +
- more >> + more >> -1
2
3
4
5
6
7
8
9
10let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
1 概述
1.1 重复声明
-
+
1 | function f(){ |
1
@@ -882,19 +880,19 @@1
-
+
- ECMA5 标准库
+ ECMA6 类
-
+
@@ -902,10 +900,9 @@
- 1 判断某个变量是否为函数
1
2
3
function isObject(value){
return value === Object(value);
}
-2 对象的键名
+ 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
- more >>
+ more >>
@@ -940,7 +937,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -970,19 +967,19 @@
+
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
-
+
@@ -990,27 +987,17 @@
- 概念
-
-
-
-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 >>
@@ -1045,7 +1032,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 774ff24..df9c2da 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -140,19 +140,19 @@ chochi
-
+
- ECMA6 类
+ ECMA5 标准库
-
+
@@ -160,9 +160,10 @@
- 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
+ 1 判断某个变量是否为函数
1
2
3
function isObject(value){
return value === Object(value);
}
+2 对象的键名
- more >>
+ more >>
@@ -197,7 +198,7 @@ Class
@@ -227,19 +228,19 @@ Class
-
+
- ECMA5 this指针
+ ECMA5 数组
-
+
@@ -247,19 +248,19 @@
- 1 概念
-
-1
2
3
4
5
6
7
8
9
10
let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
+ 1 静态方法
1.1 判断是否为数组
+
+1
Array.isArray( array )
+
+
@@ -289,7 +290,7 @@ 1
@@ -319,19 +320,19 @@ 1
-
+
- ECMA5 函数
+ ECMA5 对象
-
+
@@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
- ECMA5 标准库 + ECMA6 类
- + @@ -902,10 +900,9 @@
- 1 判断某个变量是否为函数
1
2
3
function isObject(value){
return value === Object(value);
}
-2 对象的键名
+ 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
- more >>
+ more >>
@@ -940,7 +937,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -970,19 +967,19 @@
+
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
-
+
@@ -990,27 +987,17 @@
- 概念
-
-
-
-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 >>
@@ -1045,7 +1032,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 774ff24..df9c2da 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -140,19 +140,19 @@ chochi
-
+
- ECMA6 类
+ ECMA5 标准库
-
+
@@ -160,9 +160,10 @@
- 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
+ 1 判断某个变量是否为函数
1
2
3
function isObject(value){
return value === Object(value);
}
+2 对象的键名
- more >>
+ more >>
@@ -197,7 +198,7 @@ Class
@@ -227,19 +228,19 @@ Class
-
+
- ECMA5 this指针
+ ECMA5 数组
-
+
@@ -247,19 +248,19 @@
- 1 概念
-
-1
2
3
4
5
6
7
8
9
10
let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
+ 1 静态方法
1.1 判断是否为数组
+
+1
Array.isArray( array )
+
+
@@ -289,7 +290,7 @@ 1
@@ -319,19 +320,19 @@ 1
-
+
- ECMA5 函数
+ ECMA5 对象
-
+
@@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
1 判断某个变量是否为函数
1 | function isObject(value){ |
2 对象的键名
+Classes
1 Class-Like structures in ecma5
1 | // property |
- 展开全文 >>
+ 展开全文 >>
@@ -970,19 +967,19 @@
+
- ECMA5 CALL APPLY 模拟
+ ECMA5 面向对象编程
-
+
@@ -990,27 +987,17 @@
- 概念
-
-
-
-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 >>
@@ -1045,7 +1032,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 774ff24..df9c2da 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -140,19 +140,19 @@ chochi
-
+
- ECMA6 类
+ ECMA5 标准库
-
+
@@ -160,9 +160,10 @@
- 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
+ 1 判断某个变量是否为函数
1
2
3
function isObject(value){
return value === Object(value);
}
+2 对象的键名
- more >>
+ more >>
@@ -197,7 +198,7 @@ Class
@@ -227,19 +228,19 @@ Class
-
+
- ECMA5 this指针
+ ECMA5 数组
-
+
@@ -247,19 +248,19 @@
- 1 概念
-
-1
2
3
4
5
6
7
8
9
10
let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
+ 1 静态方法
1.1 判断是否为数组
+
+1
Array.isArray( array )
+
+
@@ -289,7 +290,7 @@ 1
@@ -319,19 +320,19 @@ 1
-
+
- ECMA5 函数
+ ECMA5 对象
-
+
@@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
- ECMA5 CALL APPLY 模拟 + ECMA5 面向对象编程
- + @@ -990,27 +987,17 @@
- 概念
-
-
-
-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 >>
@@ -1045,7 +1032,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 774ff24..df9c2da 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -140,19 +140,19 @@ chochi
-
+
- ECMA6 类
+ ECMA5 标准库
-
+
@@ -160,9 +160,10 @@
- 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
+ 1 判断某个变量是否为函数
1
2
3
function isObject(value){
return value === Object(value);
}
+2 对象的键名
- more >>
+ more >>
@@ -197,7 +198,7 @@ Class
@@ -227,19 +228,19 @@ Class
-
+
- ECMA5 this指针
+ ECMA5 数组
-
+
@@ -247,19 +248,19 @@
- 1 概念
-
-1
2
3
4
5
6
7
8
9
10
let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
+ 1 静态方法
1.1 判断是否为数组
+
+1
Array.isArray( array )
+
+
@@ -289,7 +290,7 @@ 1
@@ -319,19 +320,19 @@ 1
-
+
- ECMA5 函数
+ ECMA5 对象
-
+
@@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
概念
-
-
-
-
call 模拟
-
-
1.2 new 命令
-
+
1 | Function.prototype.myCall = function(_context){ |
1.2.1 new 原理
1 | graph TB |
- 展开全文 >>
+ 展开全文 >>
diff --git a/page/2/index.html b/page/2/index.html
index 774ff24..df9c2da 100644
--- a/page/2/index.html
+++ b/page/2/index.html
@@ -140,19 +140,19 @@ chochi
-
+
- ECMA6 类
+ ECMA5 标准库
-
+
@@ -160,9 +160,10 @@
- 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
+ 1 判断某个变量是否为函数
1
2
3
function isObject(value){
return value === Object(value);
}
+2 对象的键名
- more >>
+ more >>
@@ -197,7 +198,7 @@ Class
@@ -227,19 +228,19 @@ Class
-
+
- ECMA5 this指针
+ ECMA5 数组
-
+
@@ -247,19 +248,19 @@
- 1 概念
-
-1
2
3
4
5
6
7
8
9
10
let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
+ 1 静态方法
1.1 判断是否为数组
+
+1
Array.isArray( array )
+
+
@@ -289,7 +290,7 @@ 1
@@ -319,19 +320,19 @@ 1
-
+
- ECMA5 函数
+ ECMA5 对象
-
+
@@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
- ECMA6 类 + ECMA5 标准库
- + @@ -160,9 +160,10 @@
- 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
+ 1 判断某个变量是否为函数
1
2
3
function isObject(value){
return value === Object(value);
}
+2 对象的键名
- more >>
+ more >>
@@ -197,7 +198,7 @@ Class
@@ -227,19 +228,19 @@ Class
-
+
- ECMA5 this指针
+ ECMA5 数组
-
+
@@ -247,19 +248,19 @@
- 1 概念
-
-1
2
3
4
5
6
7
8
9
10
let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
+ 1 静态方法
1.1 判断是否为数组
+
+1
Array.isArray( array )
+
+
@@ -289,7 +290,7 @@ 1
@@ -319,19 +320,19 @@ 1
-
+
- ECMA5 函数
+ ECMA5 对象
-
+
@@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
Classes
1 Class-Like structures in ecma5
1 | // property |
1 判断某个变量是否为函数
1 | function isObject(value){ |
2 对象的键名
- more >> + more >> @@ -197,7 +198,7 @@Class
@@ -227,19 +228,19 @@Class
-
+
- ECMA5 this指针
+ ECMA5 数组
-
+
@@ -247,19 +248,19 @@
- 1 概念
-
-1
2
3
4
5
6
7
8
9
10
let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
+ 1 静态方法
1.1 判断是否为数组
+
+1
Array.isArray( array )
+
+
@@ -289,7 +290,7 @@ 1
@@ -319,19 +320,19 @@ 1
-
+
- ECMA5 函数
+ ECMA5 对象
-
+
@@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
- ECMA5 this指针 + ECMA5 数组
- + @@ -247,19 +248,19 @@
- 1 概念
-
-1
2
3
4
5
6
7
8
9
10
let obj = {
fun : function(){
console.log(this);//obj
return function(){
console.log(this);//window 匿名函数有全局性
};
}
};
+ 1 静态方法
1.1 判断是否为数组
+
+1
Array.isArray( array )
+
+
1 概念
-
-
1 | let obj = { |
1 静态方法
1.1 判断是否为数组
-
+
1 | Array.isArray( array ) |
1
@@ -319,19 +320,19 @@1
-
+
- ECMA5 函数
+ ECMA5 对象
-
+
@@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
- ECMA5 函数 + ECMA5 对象
- + @@ -339,12 +340,14 @@
- 1 概述
1.1 重复声明
-1 键名
+
-1
2
3
4
5
6
7
8
function f(){
console.log('one');
}
f(); //two
function f(){
console.log('two');
}
f(); //two
- more >>
+ more >>
@@ -379,7 +382,7 @@ 1
@@ -409,19 +412,19 @@ 1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
1 概述
1.1 重复声明
-
-
1 键名
-
+
1 | function f(){ |
1
@@ -409,19 +412,19 @@1
-
+
- ECMA5 面向对象编程
+ ECMA5 CALL APPLY 模拟
-
+
@@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
- ECMA5 面向对象编程 + ECMA5 CALL APPLY 模拟
- + @@ -429,17 +432,27 @@
- 1 实例对象与new 命令
1.1 构造函数
-概念
+
+
+
+call 模拟
+
-1.2.1 new 原理
1
2
3
4
graph TB
A[1.创建一个空对象作为将要返回的对象实例]--> B[2.将这个空对象的原型指向构造函数的prototype属性]
B-->C[3.将空对象赋值给函数内部的this关键字]
C-->D[4.开始执行构造函数内部的代码]
+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 >>
@@ -474,7 +487,7 @@
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
1 实例对象与new 命令
1.1 构造函数
-
-
概念
-
+
-
+
call 模拟
-
+
1.2.1 new 原理
1 | graph TB |
1 | Function.prototype.myCall = function(_context){ |
- 展开全文 >>
+ 展开全文 >>
@@ -504,19 +517,19 @@
+
- ECMA5 数组
+ ECMA5 this指针
-
+
@@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
@@ -566,7 +579,7 @@
- 展开全文 >>
+ 展开全文 >>
diff --git a/tags/JS/index.html b/tags/JS/index.html
index b160686..77fb524 100644
--- a/tags/JS/index.html
+++ b/tags/JS/index.html
@@ -204,14 +204,14 @@
- ECMA5 CALL APPLY 模拟
+ ECMA6 类
@@ -253,14 +253,14 @@
- ECMA5 对象
+ ECMA5 面向对象编程
@@ -400,14 +400,14 @@
- ECMA5 this指针
+ ECMA5 对象
@@ -449,14 +449,14 @@
- ECMA6 类
+ ECMA5 包装对象
@@ -498,14 +498,14 @@
- ECMA5 包装对象
+ ECMA5 CALL APPLY 模拟
@@ -547,14 +547,14 @@
- ECMA5 数组 + ECMA5 this指针
- + @@ -524,19 +537,19 @@
- 1 静态方法
1.1 判断是否为数组
-
-1
Array.isArray( array )
-
-
+
1 静态方法
1.1 判断是否为数组
-
-
1 | Array.isArray( array ) |
-
-