经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » HTMLCSS » CSS » 查看文章
JavaScript函数
来源:cnblogs  作者:Yven  时间:2018/10/18 8:44:06  对本文有异议

JS高级

一、函数高级

1、函数回调

  1. // 回调的函数
  2. function callback(data) {}
  3. // 逻辑函数
  4. function func(callback) {
  5. // 函数回调
  6. if (callback) callback(data);
  7. }
  8. // 函数回调的本质:在一个函数中(调用函数),当满足一定条件,调用参数函数(回调函数)
  9. // 回调函数作为调用函数的参数传入
  10. // 回调函数通过参数将调用还是内部数据传出

2、闭包

  1. function outer() {
  2. var data = {}
  3. function inner() {
  4. return data;
  5. }
  6. return inner;
  7. }
  8. // 闭包目的:不允许提升变量作用域时,该函数的局部变量需要被其他函数使用
  9. // 闭包本质:函数的嵌套,内层函数称之为闭包
  10. // 闭包的解决案例:①影响局部变量的生命周期,持久化局部变量;②解决变量污染

二、循环绑定

  1. .html文件
  2. <ul>
  3. <li>列表项</li>
  4. <li>列表项</li>
  5. <li>列表项</li>
  6. </ul>
  1. .js文件
  2. var lis = document.querySelector('li');
  3. for (var i = 0; i < lis.length; i++) {
  4. lis[i].onclick = function () {
  5. // 打印列表项的索引
  6. console.log(i);
  7. }
  8. }
  9. // 变量污染
  10. // 获取局部作用域解决
  11. // 闭包解决
  12. // 对象属性解决

三、面向对象JS

1、属性与方法

  1. var obj = {}; | var obj = new Object();
  2. // 属性
  3. obj.prop = "";
  4. // 方法
  5. obj.func = function () {}
  6. // 删除属性与方法
  7. delete obj.prop
  8. delete obj.func

2、类字典结构使用

  • 结构
  1. var dict = {name: "zero", age: 18}
  • 拓展
  1. var dict = {"my-name": "zero", fn: function () {}, fun () {}}
  • 使用
  1. dict.name | dict["my-name"] | dict.fn()

3、构造函数(ES5)

  1. function People(name, age) {
  2. this.name = name;
  3. this.age = age;
  4. this.eat = function () {
  5. return 'eat';
  6. }
  7. }

4、继承(ES5)

  1. // 父级
  2. function Sup(name) {
  3. this.name = name;
  4. this.fn = function () {
  5. console.log('fn class');
  6. }
  7. }
  8. // 原型
  9. console.log(Sup.prototype);
  10. console.log(sup.__proto__);
  11. // 子级
  12. function Sub(name) {
  13. // 继承属性
  14. Sup.call(this, name);
  15. }
  16. // 继承方法
  17. Sub.prototype = new Sup;
  18. // 创建子级对象
  19. var sub = new Sub("subClass");
  20. // 使用属性
  21. console.log(sub.name);
  22. // 使用方法
  23. sub.fn();
  24. // 指向自身构造函数
  25. Sub.prototype.constructor = Sub;

5、类及继承(ES6)

  1. // 父类
  2. class People {
  3. // 构造器
  4. constructor (name, age) {
  5. this.name = name;
  6. this.age = age;
  7. }
  8. // 实例方法
  9. eat () {
  10. console.log('吃吃吃');
  11. }
  12. // 类方法
  13. static create () {
  14. console.log('诞生');
  15. }
  16. }
  17. // 子类
  18. class Student extends People {
  19. constructor (name, age) {
  20. // super关键词
  21. super(name, age)
  22. }
  23. }

四、定时器

  • setInterval
  • setTimeout
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号