他的回复:
华为云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]) } ```