JS高级
一、函数高级
-
闭包
function outer() { var data = {} function inner() { return data; } return inner; } // 闭包目的:不允许提升变量作用域时,该函数的局部变量需要被其他函数使用 // 闭包本质:函数的嵌套,内层函数称之为闭包 // 闭包的解决案例:①影响局部变量的生命周期,持久化局部变量;②解决变量污染
二、循环绑定
.html文件 <ul> <li>列表项</li> <li>列表项</li> <li>列表项</li> </ul> .js文件 var lis = document.querySelector('li'); for (var i = 0; i < lis.length; i++) { lis[i].onclick = function () { // 打印列表项的索引 console.log(i); } } // 变量污染 // 获取局部作用域解决 // 闭包解决 // 对象属性解决
三、面向对象JS
1、属性与方法
var obj = {}; | var obj = new Object(); // 属性 obj.prop = ""; // 方法 obj.func = function () {} // 删除属性与方法 delete obj.prop delete obj.func
2、类字典结构使用
-
结构
var dict = {name: "zero", age: 18}
-
拓展
var dict = {"my-name": "zero", fn: function () {}, fun () {}}
-
使用
dict.name | dict["my-name"] | dict.fn()
function People(name, age) { this.name = name; this.age = age; this.eat = function () { return 'eat'; } }
4、类及继承(ES6)
class People { // 构造器 constructor (name, age) { this.name = name; this.age = age; } // 实例方法 eat () { console.log('吃吃吃'); } // 类方法 static create () { console.log('诞生'); } }
Time the study pain is temporary,has not learned the pain is life-long.