闭包、访问器属性、类与对象的创建和解析、JS浏览器应用
程序员文章站
2022-05-20 16:01:02
...
一、闭包的概念与应用
1、闭包的概念
闭包:有权访问另一个函数作用域中的变量的函数;一般情况就是在一个函数中包含另一个函数,也即是一个父子函数,且子函数调用了父函数中的变量。
2、闭包的应用
fn = function (a) {
let f = function (b) {
return a + b;
};
return f;
};
let f1 = fn(10);
// fn()调用完成,但是内部的a被子函数引用了, 所以fn()创建的作用域不消失
console.log(f1(20));
二、访问器属性
let user = {
data: { name: "Harvey", height: 187 },
getHeight() {
return user.data.height;
},
setHeight(height) {
user.data.height = height;
},
};
console.log(user.getHeight());
user.setHeight(167);
console.log(user.getHeight());
三、类与对象
class Parent {
// 公共字段
name = "username";
email = "userman@isidun.com";
//私有成员
#gender = "male";
//构造方法
constructor(name, email, sex) {
this.name = name;
this.email = email;
this.#gender = sex;
}
// 公共方法
getInfo() {
return `name = ${this.name} ,email = ${this.email}, sex = ${this.#gender}`;
}
//静态成员
static status = "enabled";
}
const user1 = new Parent("Aiden", "aiden@isidun.com", "male");
console.log(user1.getInfo());
//继承,为了扩张功能
class Child extends Parent {
constructor(name, email, sex, salary) {
super(name, email, sex);
//子类中的新属性
this.salary = salary;
}
getInfo() {
return `${super.getInfo()}, salary = ${this.salary}`;
}
}
const user2 = new Child("Sunny", "sunny@isidun.com", "female", 25000);
console.log(user2.getInfo());
三、数组与对象的解构
1、数组解构
let [name, email] = ["Harvey", "harvey@isidun.com"];
console.log(name, email);
参数不足,给定默认参数
[name, email, age = 18] = ["Herman", "heaman@isidun.com"];
console.log(name, email, age);
参数过多…rest
let [a, b, c, ...d] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
console.log(a, b, c, d);
2、对象解构
let { id, lesson, score } = { id: 1, lesson: "js", score: 80 };
console.log(id, lesson, score);
3、案例
function getUser({id,name, email}){
console.log(id,name, email);
}
getUser({id:123,name:"Herman",email:'herman@samrtusedphones.com'});
四、JS引入应用
1、元素中的事件属性
点击按钮改变body背景色、按钮背景色及按钮文字。
<button onclick="document.body.style.backgroundColor='wheat';this.style.backgroundColor='yellow';this.textContent='保存成功'">按钮2</button>
2、引入本文档中JS
效果同上
<button onclick="setBg(this)">按钮2</button>
<script>
function setBg(ele) {
document.body.style.backgroundColor = "wheat";
ele.style.backgroundColor = "yellow";
ele.textContent = "保存成功";
}
</script>
3、引入外部JS
效果同上,HTML核心代码:
<body>
<button onclick="setBg(this)">按钮2</button>
<script src="outer.js"></script>
</body>
JS文档代码:
function setBg(ele) {
document.body.style.backgroundColor = "wheat";
ele.style.backgroundColor = "yellow";
ele.textContent = "保存成功";
}
五、DOM元素的二个API
1、querySelectorAll
选择一组css标签/class,演示:
<body>
<ul class="list">
<li class="item">item1</li>
<li class="item">item2</li>
<li class="item">item3</li>
<li class="item">item4</li>
<li class="item">item5</li>
</ul>
<script>
const items = document.querySelectorAll(".list > .item");
console.log(items);
for (let i = 0, length = items.length; i < length; i++) {
items[i].style.color = "green";
}
</script>
</body>
2、querySelector
选择一组中的一个,演示:
<body>
<ul class="list">
<li class="item">item1</li>
<li class="item">item2</li>
<li class="item">item3</li>
<li class="item">item4</li>
<li class="item">item5</li>
</ul>
<script>
// 将第一个改为黄色背景
const first = document.querySelector(".list> .item");
console.log(first === items[0]);
first.style.backgroundColor = "yellow";
//将第4个改为wheat背景
const fourth = document.querySelector(".list> .item:nth-of-type(4)");
fourth.style.backgroundColor = "wheat";
</script>
</body>
推荐阅读
-
闭包的原理与经典应用场景,访问器属性,类与对象的创建与成员引用,数组与对象的解构过程与经典案例,JS引入到浏览器中的的方法及获取DOM元素的两个API
-
闭包/类与对象/解构/浏览器的 js
-
闭包的原理与经典应用场景 、访问器属性、类与对象的创建与成员引用 、数组与对象的解构、JS引入到浏览器中的的方法
-
闭包的原理与经典应用场景,访问器属性,类与对象的创建与成员引用,数组与对象的解构过程与经典案例,JS引入到浏览器中的的方法及获取DOM元素的两个API
-
闭包/访问器属性/类与对象/解构赋值/js引入与获取DOM对象
-
闭包/类与对象/解构/浏览器的 js
-
闭包、访问器属性、类与对象的创建和解析、JS浏览器应用
-
闭包/访问器属性/类与对象/解构赋值/js引入与获取DOM对象
-
闭包、访问器属性、类与对象的创建和解析、JS浏览器应用
-
闭包及访问量属性和类与对象解构赋值以及js中对html中的dom操作(时间有点紧,没全理解透,需回头整理)