fengchuanyu 4 meses atrás
pai
commit
f6565505da

+ 59 - 0
6_ES6/18_判断数据类型.html

@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    <script>
+        // 基本数据类型
+        var num = 1;
+        var str = 'hello';
+        var bool = true;
+        var oNull = null;
+        var oUndefined = undefined;
+        // 引用数据类型
+        var arr = [1,2,3,4,5];
+        var obj = {};
+        var foo = function(){};
+
+        // typeof 可以判断基本数据类型 返回字符串
+        // console.log(typeof num);
+        // console.log(typeof str);
+        // console.log(typeof bool);
+        // console.log(typeof oNull);
+        // console.log(typeof oUndefined);
+        // console.log(typeof arr);
+        // console.log(typeof obj);
+        // console.log(typeof foo);
+
+        // instanceof 可以判断引用数据类型 返回布尔值
+        // console.log(arr instanceof Array);
+        // console.log(obj instanceof Object);
+        // console.log(foo instanceof Function);
+        // console.log(num instanceof Number); 
+
+        // cunstructor 可以判断引用数据类型 返回构造函数
+        // Array, Object, Function, Number, String, Boolean
+        // console.log(arr.constructor);
+        // console.log(obj.constructor);
+        // console.log(foo.constructor);
+        // console.log(num.constructor);
+        // console.log(str.constructor);
+
+        // Object.prototype.toString.call() 可以判断所有数据类型 返回字符串
+        console.log(Object.prototype.toString.call(num));
+        console.log(Object.prototype.toString.call(str));
+        console.log(Object.prototype.toString.call(bool));
+        console.log(Object.prototype.toString.call(oNull));
+        console.log(Object.prototype.toString.call(oUndefined));
+        console.log(Object.prototype.toString.call(arr));
+        console.log(Object.prototype.toString.call(obj));
+        console.log(Object.prototype.toString.call(foo));
+
+
+
+    </script>
+</body>
+</html>

+ 35 - 0
6_ES6/19_克隆/拷贝.html

@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    <script>
+        var obj = {
+            name: 'zhangsan',
+            age: 18,
+            friend:{
+                name: 'lisi',
+                age: 19
+            }
+        }
+        var obj2 = obj;
+        // 浅拷贝 把第一层的值赋值给了新对象
+        var obj3 = Object.assign({},obj);
+        obj.age = 20;
+        obj.friend.age = 20;
+        console.log(obj2,obj3);
+       
+
+        // var arr = [1,2,3,4,5,[6,7,8,9]];
+        // var arr2 = arr;
+
+
+        // 深拷贝
+        var res = deepClone(obj);//可以接受任意类型的参数 Array, Object
+        
+   </script>
+</body>
+</html>

+ 19 - 2
6_ES6/练习题5_手动实现bind.html

@@ -10,11 +10,28 @@
 <body>
     <script>
         // 第一步向Function.prototype上添加一个bind2方法
+        // Function.prototype.bind2 = function (obj,...arg) {
+        //     // 返回一个函数
+        //     let that = this;
+        //     return function () {
+        //         // that.call(obj);
+        //         // that.apply(obj,arg);
+        //         that.call(obj,...arg);
+        //     }
+        // }
+
         Function.prototype.bind2 = function (obj) {
             // 返回一个函数
-            let that = this;
+            var that = this;
+            // console.log(arguments.slice(1));
+            // console.log(arguments);
+            // console.log(Array.from(arguments));
+            // var arg = Array.from(arguments);
+            var arg = Array.prototype.slice.call(arguments,1);
             return function () {
-                that.call(obj);
+                // that.call(obj);
+                // that.apply(obj,arg);
+                that.apply(obj,arg);
             }
         }
 

+ 21 - 0
6_ES6/练习题6_手动实现bind讲解.html

@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    <script>
+        // var arr = [1,2,3,4,5,6,7,8,9];
+        // console.log(arr.slice(1));
+
+
+        function foo(){
+            console.log(arguments);
+            console.log(Array.prototype.slice.call(arguments,0))
+        }
+        foo(1,2,3,4,5,6)
+    </script>
+</body>
+</html>