Blogger Information
Blog 16
fans 0
comment 0
visits 13239
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JS高阶知识——值传递/引用传递—模板字面量—解构赋值—对象字面量—函数bind()、call()、apply()方法—访问器属性—流程控制/判断语句
小雨丶
Original
798 people have browsed it
值传递&&引用传递
  1. 数据类型:值类型和引用类型
  2. 值传递:基本数据类型
  3. 引用传递:引用类型
  4. 函数传参: 无论什么类型,都是值传递
  5. 函数中对参数的更新,并不会影响到入参:
  6. const fn = x => (x = 10);
  7. let x = 5;
  8. fn(x);
  9. console.log(x);
  10. 输出的结果是5//这表示函数中对参数的更新,不会影响传入的参数在函数外的值
  11. 引用类型的更新,是全新赋值才是更新,修改其中的一项或者几项不算更新了引用类型的值,所以引用类型的参数也属于值传递
  12. 深拷贝: 值的操作
  13. 浅拷贝: 值所在内存地址的操作
模板字面量: 将表达式嵌入到字符串
  1. 传统的方式:
  2. let a =1, b=2;
  3. let res = a + " + " + b + " = " + (a + b);
  4. 模板字面量方式:
  5. res = `${ a } + ${ b } = ${a + b}`;
  6. 模板字面量的组成
  7. 使用反引号``,
  8. 里面的变量用${}囊括
  9. *模板字面量创建多行字符串可以保留格式
  10. let menu = ['首页', '视频', '文章'];
  11. let htmlStr = `<ul>
  12. <li>${menu[0]}</li>
  13. <li>${menu[1]}</li>
  14. <li>${menu[2]}</li>
  15. </ul>`
  16. 输出的就是HTML标签
  17. document.body.insertAdjacentHTML("beforeEnd", htmlStr); //将标签插入HTML中
  18. 自定义模板自变量的行为
  19. 模板自变量可以作为参数,不用写小括号
  20. 作为参数的条件:
  21. 第一个参数: 模板字面量中的字符串字面量组成的数组
  22. 从第二个参数开始,将模板字面量中的变量一次传入
解构赋值
解构赋值: 快速从集合数据(数组/对象)解构出独立变量
  1. 数组
  2. [a, b, ...c] = [1, 2, 3, 4, 5];
  3. [,,a,,] = [1, 2, 3, 4, 5];// a = 3;
  4. console.log((a, b, c));//输出的a是1,b是2,c是[3, 4, 5]的数组
  5. 利用解构去掉数组中的a
  6. [a, ...ar] = [1, 2, 4, 4]
  7. console.log(a); //1
  8. console.log(ar); //[2, 4, 4]
  9. 对象
  10. let email = "admin@php.cn"
  11. let { role, email: userEmail } = { role: "user", emial: "user@php.cn" }
  12. console.log(userEmail);//输出user@php.cn
  13. console.log(email);//输出admin@php.cn
  14. 参数解构
  15. 解构是用相同类型的两组进行比较,最后拿到符合条件的一组新的,不改变原有数据
  16. 数组传参
  17. let sum = ([a+ b]) => a+b;
  18. console.log(sum([10,20]));
  19. 对象传参
  20. let getUser = ({name, email} => [name, email]);
  21. console.log(getUser({email: 'tp@.php.cn', name: '天蓬老师'}));
对象字面量的简化
  1. 当属性与同一个作用域中的变量同名时,可以直接用属性来引用变量值
  2. `let user = {
  3. userName: '天蓬',
  4. userEmail: 'admin@php.cn',
  5. getInfo: function() {
  6. return `${this.userName}(${this.userEmail})`;
  7. }
  8. }
  9. let {userName, userEmail} = user;
  10. users = {
  11. userName,
  12. userEmail,
  13. getInfo: function() {
  14. return `${this.userName}(${this.userEmail})`;
  15. }
  16. }
  17. console.log(users.getInfo());`
  18. 函数也可以简写,去掉: function——不用定义直接写函数

this 说明,this指向定义它的函数,不是调用,this存在于作用域中,对象是没有作用域的,只有函数或块是有作用域的;

函数自带的方法
bind()
  1. bind()主要作用是操作this的指向,将一个函数绑定到一个对象上,函数中的this便是绑定的这个对象,而不是函数自身
  2. function hello(name){
  3. this.name = name;
  4. console.log(this.name);
  5. }
  6. const obj = {
  7. name: 'admin',
  8. }
  9. //将hello绑定到obj对象上去
  10. let f = hello.bind(obj,'天蓬老师');
  11. f();
call()/apply()
  1. call用法跟bind()类似,只是call()会立即调用
  2. apply()跟call用法类似,只是apply()仅用于后边传递的参数是数组形式
访问器属性
  1. 将方法伪造成一个属性
  2. X对象里面的方法fn()
  3. get 定义:
  4. get fn() {}
  5. 在调用的时候x.fnfnX的属性,而不是一个函数
  6. 同理 set 定义也是一样,但是用set定义需要有个参数
  7. get/set定义的伪属性名字不要跟其他属性重复,会冲突
流程控制——条件判断
  1. if——else
  2. switch:属于严格模式,单值判断
  3. switch (true/false) {
  4. case 条件语句 :
  5. 执行语句 ;
  6. break;
  7. case 条件语句 :
  8. 执行语句 ;
  9. break;
  10. default: //都不匹配
  11. 执行语句;
  12. }
  13. 三元运算符:
  14. 条件 ? true : false;
  15. 三元运算符可以直接对简单的条件进行判断并处理,但是不适用于复杂的语句,优先级也略差,如果同一行有赋值之类的,最好用小括号括起来三元运算符。
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post