作者小头像 Lv.1
42 成长值

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据
个人勋章
TA还没获得勋章~
成长雷达
30
12
0
0
0

个人资料

个人介绍

这个人很懒,什么都没有留下

感兴趣或擅长的领域

暂无数据

达成规则

发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32570 468 0
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32570 468 0
他的回复:
华为云ID: hw41783373心得: ajax日常只是用jq封装好的,或者用vue的axios。对于原生的不怎么熟悉了。跨域日常都是后端解决,,,也是需要多了解一下。网络知识嘛,有点难AJAXajax(Asynchronous Javascript And XML)异步的Javascript 和XMLajax优势:大幅提升用户体验减轻服务器端压力异步加载局部更新网络通信OSI参考模型各层的理解应用层为应用程序提供服务表示层数据格式转化、数据加密会话层建立、管理和维护会话传输层建立、管理和维护端到端的链接(TCP、UDP)网络层IP地址及路由选择(路由器)数据链路层提供介质访问和链路管理(交换机)(网络接口层)物理层物理层(网络接口层)核心: XMLHttpRequest四步走:创建XMLHTTPRequest使用open方法,初始化请求参数使用send方法,发送请求使用onreadystatechange属性,结束返回数据var xhr = nullif(window.XMLHttpRequest) {    xhr = new XMLHttpRequest()} else if (window.ActiveXObject)  {    xhr = new ActiveXobject('Microsoft.XMLHTTP')}xhr.open('post', '/ajax', true)xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')xhr.send()xhr.onreadystatechange = function() {    if(chr.readyState==4) {        if(xhr.state == 200) {            console.log(xhr.responseText)        }    }}同源策略浏览器的安全策略: 协议、主机名、端口号跨域的方法: JSONP、Proxy、iframe、CORS
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32570 468 0
他的回复:
华为云ID: hw41783373心得: 工作半年多了,组件用的熟练多了,原生的东西网差不多了,是时候加强复习了。基础的一些实现面试还是要考的,加油内置对象什么是内置对象javascript 中的对象分为3种:自定义对象、内置对象、浏览器对象前面两种对象属于ECMAScript,第三个浏览器对象是js独有的。封装自己的数学对象var myMath = {    PI: 3.141592653,    max: function() {        var max = arguments[0];        for (var i = 1; i arguments.length; i++) {            if (arguments[i] > max) {                max = arguments[i]            }        }        return max;    },    min: function() {        var min = arguments[0];        for (var i = 1; i arguments.length; i++) {            if (arguments[i] min) {                min = arguments[i]            }        }        return min;    }}Math对象Math.round(1.5) // 2Math.round(-1.5) // -1Math.round(-1.6) // -2Math.random() [0,1]// 得到两个数直接的随机数function getRandomArbitrary(min, max) {    return Math.random() * (max - min) + min;}// 得到一个两数之间的随机整数function getRandomInt(min, max) {    min = Math.ceil(min)    max = Math.floor(max)    return Math.floor(Math.random() * (max - min)) + min; // 不含最大值,含最小值}// 也许很容易想到用 Math.round() 来实现,但是这会导致你的随机数处于一个不均匀的分布,这可能不符合你的需求。// 得到一个两数之间的随机整数,包括两个数在内function getRandomIntInclusive(min, max) {    min = Math.ceil(min);    max = Math.floor(max);    return Math.floor(Math.random() * (max - min + 1)) + min; // 含最大值,含最小值 }Date对象Date() 日期对象 是一个构造函数,必须使用new来调用日期对象??vscode插件 runcode结果浏览器控制台结果时间戳:// 一般写法var date = new Date();date.valueOf()date.getTime()// 简便写法(最常用写法)+new Date()// 不考虑兼容性 H5新增的方法Date.now()数组检测数组的两种方式arr instanceof ArrayArray.isArray(arr)排序使用映射改善排序(没懂)compareFunction 可能需要对元素做多次映射以实现排序,尤其当 compareFunction 较为复杂,且元素较多的时候,某些 compareFunction 可能会导致很高的负载。使用 map 辅助排序将会是一个好主意。基本思想是首先将数组中的每个元素比较的实际值取出来,排序后再将数组恢复。// 需要被排序的数组var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'];// 对需要排序的数字和位置的临时存储var mapped = list.map(function(el, i) {  return { index: i, value: el.toLowerCase() };})// 按照多个值排序数组mapped.sort(function(a, b) {  return +(a.value > b.value) || +(a.value === b.value) - 1;});// 根据索引得到排序的结果var result = mapped.map(function(el){  return list[el.index];});获取数组索引arr.indexOfarr.lastIndexOf数组去重function unique(arr) {    let newArr = [];    for(var i = 0; i arr.length; i++) {        if (newArr.indexOf(arr[i]) === -1) {            newArr.push(arr[i])        }    }    return newArr;}字符串基本包装类型js把简单数据类型包装为复杂数据类型,其执行过程如下:生成临时变量,把简单类型包装为复杂数据类型var temp = new String('andy')赋值给我们声明的字符变量str = temp销毁临时变量temp = null字符串不可变看上去可以改变,但其实是地址变了,内存中开辟了一个内存空间。因为字符串不可变,所以不要大量的拼接字符串根据字符返回位置str.indexOf(searchValue [, fromIndex])根据位置返回字符1. charAt(index) // 根据位置返回字符2. charCodeAt(index) // 返回相应索引号的字符ASCII值 目的: 判断用户按下了哪个键3. str[index] // h5新增的,可能有兼容性问题
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32570 468 0
他的回复:
华为云ID: hw41783373 第四章、第五章学习笔记 心得: 看来算法啥的还是必须得了解一下的,做面试题应该会用到。这里学到构造函数,我工作了这半年多,还没自己写过构造函数呢,可能我的工作内容都太基础太片面了。多多学习多多学习! # 数组 前面的内容比较基础,不做记录了。 ## 冒泡排序 ```js let arr = [4,3,4,7,8,1,2,3,4] function sort(arr){ for (var i = 0; i arr.length -1; i++) { for (var j = 0; j arr.length-i-1; j++) { arr[j] > arr[j+1] ? [arr[j], arr[j+1]] = [arr[j+1], arr[j]] : '' } } return arr } console.log(arr) ``` # 函数 注意事项: - 函数return会终止函数。 - return只能返回一个值,`return num1, num2`只会返回`num2` - 没有return的话,函数返回undefined ## arguments 伪数组,存储实参。 只有函数有arguments对象,每个函数都内置好了这个对象。 ```js // 求任意个数数字的最大值 function getMax() { var max = arguments[0]; for(var i = 1; i arguments.length; i++) { arguments[i] > max ? max = arguments[i] : '' } return max; } ``` ## 全局变量和局部变量 - 使用范围不同 - 全局变量只有在浏览器关闭的时候才会被销毁,因此比较占内存;局部遍历当其代码块被执行时,会被初始化,代码块运行结束后,就会被销毁,因此更节省内存空间。 ## Javascript没有块级作用域{} es6新增了块级作用域 ## 预解析 `var a = b = c = 9;`相当于`var a = 9; b = 9; c = 9;`. b和c直接复制,没有var声明,当全局变量看 集体声明:`var a = 9, b = 9, c = 9;` # 对象 ## 构造函数方法创建对象 把对象里面相同的属性和方法抽象出来封装到函数里面。 ```js function Star(uname, age, sex) { this.name = uname; this.age = age; this.sex = sex; } var ldh = new Star('刘德华', 18, '男') ``` **注意:** - 构造函数名字首字母要大写 - 构造函数不需要return,就可以直接返回结果 - 调用构造函数,必须使用new 构造函数和对象: - 构造函数,抽象了对象的公共部分,封装到函数里面,它泛指某一大类 - 创建对象,特指某一个,通过new关键字创建对象的过程我们也称为对象实例化 ## new关键字执行过程 1. new构造函数在内存中创建一个空的对象 2. this 指向刚才创建的空对象 3. 执行构造函数里面的代码,给空对象添加属性和方法 4. 返回这个对象(构造函数不需要return) ## 遍历对象 ```js for (var key in obj) { console.log(key) console.log(obj[key]) } ```
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32570 468 0
他的回复:
华为云ID: hw41783373 # 运算符 ` + - * /`(加减乘除)跟小学运算一样,不需要特别注意。 ## 自增自减 **前置递增运算符(++a)和后置递增运算符(a++)**很重要,很容易混。 - 前置递增和后置递增运算符可以简化代码的编写,让变量的值+1比以前的写法更简单 - 单独使用时,运行结果相同 - 与其他代码连用是,执行结果不同 - 后置: 先原值运算,后自加 - 前置:先自加,后运算 - 开发时,大多使用后置递增/减,并且代码独占一行,例如: `num++` 或者`num--` ## 逻辑运算符 - 逻辑终端逻辑与 -- 如果表达式1为真,则返回表达式2, 如果表达式1为假,则返回表达式1 - 逻辑终端逻辑或 -- 如果表达式1为真,则返回表达式1,如果表达式1为假,则返回表达式2 ## 运算符优先级 1. 小括号 ----------- () 2. 一元运算符 ------- ! ++ -- 3. 算术运算符 ------- * / + - 4. 关系运算符 ------- > >= = 5. 相等运算符 ------- == != === !== 6. 逻辑运算符 ------- 先&& 后 || 7. 赋值运算符 ------- = 8. 逗号运算符 ------- , ## switch switch 表达式(变量)的值 和 case后值**全等**,才会进入。 break可写可不写,写了会退出循环,否则不会退出switch,会继续往下执行下一个case,不管匹不匹配。 ## switch语句和if ... else ... 1. 一把情况下,两个语句可以互换 2. switch.. case 通常处理case值比较确定的情况,if else 更加灵活,常用语判断(大于、等于某个范围) 3. switch 进行条件判断后直接执行到程序的条件语句,效率更高。而if else 有几种条件,就得判断多少次 4. 分支比较少时, if else 执行效率比switch高 5. 分支比较多时,switch执行效率比较高,而且结构更清晰 心得:基础还是要很认真学的,很多细节需要注意。前几天做项目用了个switch函数做过滤,由于几个地方都是差不多的,只是有的后端给返回了数字,有的是字符串,是`==`不是`===`, 当时以为没什么问题,结果表格渲染不出来,找了好半天才找到是这里的问题。要加紧学习的步伐呀!
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32570 468 0
他的回复:
华为云ID: hw41783373 **学习笔记**: # 第一章 数据类型 ## 变量 声明变量的本质是去内存申请空间。 ## 数据类型 ### 为什么需要数据类型? 在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同类型的数据。 * Number 1. 八进制 2. 十六进制 3. 数字型的最大值 Number.MAX_VALUE 4. 数字型的最小值 Number.MIN_VALUE 5. 无穷大 Infinity 6. 无穷小 -Infinity 7. NaN * String * Boolean * undefined undefined + 'pink' // undefinedpink undefined + 1 // NaN * null null + 1 // 1 null + 'pink' // nullpink ### typeof 检测数据类型 typeof(10) // 'number' typeof('123') // 'string' typeof(undefined) // "undefined" typeof(null) // "object" ### 数据类型转换 1. 转换为字符串 toString() ==> num.toString() String() ==> String(num) +'' ==> num+ '' (隐式转换) **undefined 和null 不能用 .toString()的方法,会报错,另外两种可以正常使用** 2. 转换成数字型 parseInt() => 取整 parseFloat() Number() - * / (隐式转换) ‘12.34’* 1 = 12.34 ## 拓展阅读 ### 解释型语言和编译型语言 两种方式的区别在于翻译的时间点不同。 ### 标识符、关键字、保留字 * 标识符 : 开发人员为变量、属性、方法、函数等起的名字 * 关键字 : js 本身已经使用了的字 * 保留字 : 预留的关键字 学习心得: 总的来讲,这些还是比较基础的,查漏补缺,继续加油吧!
发布时间 2020/07/13 10:25:31 最后回复 blateyang 2020/08/20 23:20:02 版块 社区活动
32570 468 0
他的回复:
# 第一章 数据类型 ## 变量 声明变量的本质是去内存申请空间。 ## 数据类型 ### 为什么需要数据类型? 在计算机中,不同的数据所需占用的存储空间是不同的,为了便于把数据分成所需内存大小不同的数据,充分利用存储空间,于是定义了不同类型的数据。 * Number 1. 八进制 2. 十六进制 3. 数字型的最大值 Number.MAX_VALUE 4. 数字型的最小值 Number.MIN_VALUE 5. 无穷大 Infinity 6. 无穷小 -Infinity 7. NaN * String * Boolean * undefined undefined + 'pink' // undefinedpink undefined + 1 // NaN * null null + 1 // 1 null + 'pink' // nullpink ### typeof 检测数据类型 typeof(10) // 'number' typeof('123') // 'string' typeof(undefined) // "undefined" typeof(null) // "object" ### 数据类型转换 1. 转换为字符串 toString() ==> num.toString() String() ==> String(num) +'' ==> num+ '' (隐式转换) **undefined 和null 不能用 .toString()的方法,会报错,另外两种可以正常使用** 2. 转换成数字型 parseInt() => 取整 parseFloat() Number() - * / (隐式转换) ‘12.34’* 1 = 12.34 ## 拓展阅读 ### 解释型语言和编译型语言 两种方式的区别在于翻译的时间点不同。 ### 标识符、关键字、保留字 * 标识符 : 开发人员为变量、属性、方法、函数等起的名字 * 关键字 : js 本身已经使用了的字 * 保留字 : 预留的关键字 学习心得: 总的来讲,这些还是比较基础的,查漏补缺,继续加油吧!
发布时间 2020/06/05 11:45:07 最后回复 @Wu 2020/07/05 23:55:07 版块 社区活动
55667 487 2
他的回复:
华为云ID: hw41783373# css定位position属性用来指定一个元素在网页上的位置,一共有5种定位方式,即position属性主要有五个值。static、relative、fixed、absolute、sticky1. static 固定定位 -- position的默认值2. relative 相对定位-- relative表示,相对于默认位置(即static时的位置)进行偏移,即定位基点是元素的默认位置。它必须搭配top、bottom、left、right这四个属性一起使用,用来指定偏移的方向和距离。3. fixed 固定定位-- fixed表示,相对于视口(viewport,浏览器窗口)进行偏移,即定位基点是浏览器窗口。这会导致元素的位置不随页面滚动而变化,好像固定在网页上一样。它如果搭配top、bottom、left、right这四个属性一起使用,表示元素的初始位置是基于视口计算的,否则初始位置就是元素的默认位置。4. absolute 绝对定位-- absolute表示,相对于上级元素(一般是父元素)进行偏移,即定位基点是父元素。它有一个重要的限制条件:定位基点(一般是父元素)不能是static定位,否则定位基点就会变成整个网页的根元素html。另外,absolute定位也必须搭配top、bottom、left、right这四个属性一起使用。5. sticky sticky跟前面四个属性值都不一样,它会产生动态效果,很像relative和fixed的结合:一些时候是relative定位(定位基点是自身默认位置),另一些时候自动变成fixed定位(定位基点是视口)。sticky生效的前提是,必须搭配top、bottom、left、right这四个属性一起使用,不能省略,否则等同于relative定位,不产生"动态固定"的效果。原因是这四个属性用来定义"偏移距离",浏览器把它当作sticky的生效门槛。sticky定位可以实现一些很有用的效果。① 堆叠效果② 表格表头锁定
发布时间 2020/06/05 11:45:07 最后回复 @Wu 2020/07/05 23:55:07 版块 社区活动
55667 487 2
发布时间 2020/06/05 11:45:07 最后回复 @Wu 2020/07/05 23:55:07 版块 社区活动
55667 487 2
他的回复:
华为云ID: hw41783373 6月19日学习笔记 ## css特性 - 层叠性 - 继承性 ## 选择器 ### 通配符选择器 ### 标签选择器(元素选择器) ### id选择器 ###类选择器 ### ==属性选择器== [了解更多](https://www.runoob.com/css/css-attribute-selectors.html) ```css [title]{ color:blue;} [title=runoob]{ color:blue;} [title~=hello] { color:blue; } [lang|=en] { color:blue; } ``` 实例对比: **1.attribute 属性中包含 value:** ```css /* [attribute~=value] 属性中包含独立的单词为 value,例如:*/ [title~=flower] --> ``` ```css /* [attribute*=value] 属性中做字符串拆分,只要能拆出来 value 这个词就行,例如: */ [title*=flower] --> ``` **2.attribute 属性以 value 开头:** ```css /* [attribute|=value] 属性中必须是完整且唯一的单词,或者以 - 分隔开:,例如: */ [lang|=en] -->``` ```css /* [attribute^=value] 属性的前几个字母是 value 就可以,例如: */ [lang^=en] -->``` **3.attribute 属性以 value 结尾:** ```css /* [attribute$=value] 属性的后几个字母是 value 就可以,例如:*/ a[src$=".pdf"] ``` ### 伪类选择器 link visited hover active ### 派生选择器 - 后代选择器 - 子代选择器 > - 相邻兄弟选择器 + ## 选择器权重 权重规则: - 通配符选择器、==子选择器(>)、相邻选择器(+)、同胞选择器(~)==:0 - 标签选择器、==伪元素选择器==:1 - 类、伪类、属性选择器:10 - id选择器:100 - 内联:1000 - 特殊处理:!important(强制使用) ## 第二章第四节最后的显示问题 结构 ```html华为云: HCIA认证华为云: one span(父亲)one small span(儿子) one span 的兄弟,也是span``` 样式 ```css span { color: blue;} span + span {color: yellow;} div + p {color: pink;} ``` ![1592571562566.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202006/19/211047yjgdcgyndt6atzvt.png) 这里需要注意一个点,就是已经作用到span上的样式,后面再给span的父亲写样式,也是影响不到span的,不需要继承。所以第二行显示了三种颜色。(之前学习没注意,看到这还迷糊了,好好复习,加油!)