|
22 | 22 | * [03-02](https://github.com/TYRMars/JSlearn#03-02) `异步和单线程-单线程` |
23 | 23 | * [03-03](https://github.com/TYRMars/JSlearn#03-03) `其他知识点-日期和Math` |
24 | 24 | * [03-04](https://github.com/TYRMars/JSlearn#03-04) `其他知识点-数组和对象的API` |
| 25 | +#### 04 |
| 26 | +* [04-01](https://github.com/TYRMars/JSlearn#04-01) `从基础知识到JS-Web-API` |
25 | 27 |
|
26 | 28 |
|
27 | 29 |
|
@@ -884,18 +886,98 @@ function formatDate(dt) { |
884 | 886 | var year = dt.getFullYear(); |
885 | 887 | var month = dt.getMonth() + 1; |
886 | 888 | var date = dt.getDate(); |
887 | | - if (month = 10) { |
| 889 | + if (month < 10) { |
888 | 890 | //强制转换类型 |
889 | 891 | month = '0' + month; |
890 | 892 | } |
891 | 893 | if (date < 10) { |
892 | 894 | //强制转换类型 |
| 895 | + date = '0' + date; |
893 | 896 | } |
894 | | - |
| 897 | + //强制转换类型 |
| 898 | + return year + '-' + month + '-' + date; |
895 | 899 | } |
| 900 | +var dt = new Date(); |
| 901 | +var formatDate = formatDate(dt); |
| 902 | +console.log(formatDate); |
896 | 903 | ``` |
897 | 904 | * 获取随机数,要求是长度一致的字符串格式 |
| 905 | +```JavaScript |
| 906 | +var random = Math.random(); |
| 907 | +var random = random + '0000000000'; //后面加上10个0 |
| 908 | +var random = random.slice(0,10); |
| 909 | +console.log(random); |
| 910 | +``` |
898 | 911 | * 写一个能遍历对象和数组的通用forEach函数 |
| 912 | +```JavaScript |
| 913 | +//do |
| 914 | +var arr = [1,2,3]; |
| 915 | +//注意,这里的参数的顺序换了,为了和对象的遍历格式一致 |
| 916 | +forEach(arr,function (index,item) { |
| 917 | + console.log(index.item); |
| 918 | +}) |
| 919 | + |
| 920 | +var obj = {x:100,y:200}; |
| 921 | +forEach(obj,function (key,value) { |
| 922 | + console.log(key,value); |
| 923 | +}) |
| 924 | + |
| 925 | +//init |
| 926 | +function forEach(obj,fn) { |
| 927 | + var key; |
| 928 | + if (obj instanceof Array) { |
| 929 | + //准确判断是不是一个数组 |
| 930 | + obj.forEach(function (index.item) { |
| 931 | + fn(index,item); |
| 932 | + }) |
| 933 | + }else { |
| 934 | + //不是数组就是对象 |
| 935 | + for (key in obj){ |
| 936 | + fn(key,obj[key]); |
| 937 | + } |
| 938 | + } |
| 939 | +} |
| 940 | +``` |
| 941 | + |
| 942 | +## 04-01 |
| 943 | +### 从基础知识到JS-Web-API |
| 944 | +* 变量类型和计算 |
| 945 | +* 原型和原型链 |
| 946 | +* 闭包和作用域 |
| 947 | +* 异步和单线程 |
| 948 | +* 其他(如日期、Math、各种常用API) |
| 949 | +#### 特点 |
| 950 | +* 特点:表面上来看不能用于工作中开发代码 |
| 951 | +* 内置函数:`Object Array Boolean String ......` |
| 952 | +* 内置对象:`Math JSON ...` |
| 953 | +* 我们连在网页弹出一句`Hello World`都不能实现 |
| 954 | +#### JS-Web-API |
| 955 | +* JS基础知识:ECMA 262标准 |
| 956 | +* JS-Web-API:W3C标准 |
| 957 | +* W3C标准中关于JS的规定有: |
| 958 | + * DOM操作 |
| 959 | + * BOM操作 |
| 960 | + * 事件绑定 |
| 961 | + * ajax请求(包含http协议) |
| 962 | + * 存储 |
| 963 | +#### 基本操作 |
| 964 | +* 页面弹框是`windows.alert(123)`,浏览器需要做: |
| 965 | + * 定义一个`windows`全局变量,对象类型; |
| 966 | + * 给它定义一个`alert`属性,属性值是一个函数; |
| 967 | +* 获取元素document.getElementById(id),浏览器需要: |
| 968 | + * 定义一个document全局变量,对象属性; |
| 969 | + * 给它定义一个getElementById的属性,属性值是一个函数; |
| 970 | +* W3C标准没有规定任何JS基础相关的东西; |
| 971 | +* 不管什么变量类型、原型、作用域和异步 |
| 972 | +* 只管定义用于浏览器中JS操作页面的API和全局变量 |
| 973 | +* 全面考虑,JS内置的全局函数和对象有哪些? |
| 974 | +* 之前ECMA的 |
| 975 | +* 比如 window document |
| 976 | +* 所有未定义的全局变量,如`navigator.userAgent` |
| 977 | +#### 总结 |
| 978 | +* 常说的JS(浏览器执行的JS)包含两个部分: |
| 979 | +* JS基础知识(ECMA262标准); |
| 980 | +* JS-Web-API(W3C标准); |
899 | 981 | --- |
900 | 982 |
|
901 | 983 | ### JSDemo JS小程序 |
|
0 commit comments