登录  /  注册
博主信息
博文 46
粉丝 0
评论 0
访问量 37660
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
演示构造函数的原型与对象原型的区别, dom元素的常用方法与增删改常用操作
lus菜
原创
705人浏览过

构造函数的原型与对象原型之间的区别:

  1. 任何一个函数都有一个原型属性: prototype; prototype对于普通函数没用,对构造函数来说才有用
  2. 构造函数是"对象工厂",是用来创建对象的;对象也叫"实例", 实例: 实际案例
  3. js中没有“类”的概念,它是基于原型的语言,所以可简单的将构造函数当成“类”
  4. 构造函数必须使用“new"来调用,普通函数不用; new 的过程就是类的实例化过程,就是创建一个对象的过程, 创建对象的过程,就叫“类的实例化"
  5. 实例的原型永远指向它的构造函数的原型,实例的原型从构造函数的原型继承成员(属性/方法)

样式代码:

  1. <script>
  2. function f1() {}
  3. console.dir(f1);
  4. function User(name, email) { //声明一个构造函数
  5. this.name = name; //创建出一个新对象,用this来表示(伪代码,系统自动创建并执行)
  6. this.email = email; //初始化对象,给这个对象添加一个自定义属性,用来和其它实例进行区分
  7. return this; //返回这个对象
  8. }
  9. const user = new User("admin", "admin@php.cn");
  10. console.log(user instanceof User);
  11. console.log(user);
  12. user.__proto__.salary = 8899;
  13. console.log(user.salary);
  14. const user1 = new User("peter", "peter@php.cn");
  15. console.log(user1);
  16. console.dir(User);
  17. console.log(user1.__proto__ === User.prototype); // 实例的原型
  18. User.prototype.nation = "CHINA"; // 需要被所有类实例共享的成员,应该写到构造函数的原型上
  19. console.log(user.nation, user1.nation);
  20. User.prototype.show = function () { // 属性通常不应该共享的,它是区分不同对象的标志,方法更适合共享
  21. return { name: this.name, email: this.email, salary: this.salary };
  22. };
  23. console.log(user.show());
  24. console.log(user1.show());
  25. </script>

效果预览:

获取dom元素的常用方法:

样式代码:

  1. <body>
  2. <ul id="list">
  3. <li class="item">item1</li>
  4. <li class="item">item2</li>
  5. <li class="item">item3</li>
  6. <li class="item">item4</li>
  7. <li class="item">item5</li>
  8. </ul>
  9. <form action="">
  10. <input type="text" />
  11. </form>
  12. <script>
  13. //使用css选择器是最直观的,获取满足条件的所有元素
  14. const lis = document.querySelectorAll("#list li");
  15. console.log(lis);
  16. //Nodelist是浏览器内置的集合类型,属性类数组
  17. let lisArr = Array.from(lis);
  18. console.log(lisArr); // Array.from(), ...rest,都可以转为真正的数组
  19. let larr = [...lis];
  20. console.log(larr);
  21. lis.forEach(item => console.log(item)); //Nodelist可以直接用forEach()遍历
  22. console.log("---------------------------");
  23. let first = document.querySelectorAll("#list li:first-of-type");
  24. console.log(first); // 哪怕只获取到一个,但返回的仍然是一个集合
  25. first = document.querySelector("#list li"); //获取满足条件的第一个元素
  26. console.log(first);
  27. //以下快捷方式,用来快速 获取某一个或某一类元素
  28. console.log(document.documentElement); // html
  29. console.log(document.head); // head
  30. console.log(document.body); // body
  31. console.log(document.title); // title
  32. console.log(document.forms[0]); // forms
  33. console.log(document.forms.item(0));
  34. console.log(document.images);
  35. </script>
  36. </body>

效果预览:

dom元素的增删改查:

样式代码:

  1. <body>
  2. <ul id="list">
  3. <li>item1</li>
  4. <li>item2</li>
  5. <li>item3</li>
  6. <li>item4</li>
  7. <li>item5</li>
  8. </ul>
  9. <script>
  10. const ul = document.querySelector("#list");
  11. // 1.创建元素
  12. const li = document.createElement("li");
  13. ul.appendChild(li); // parent.appendChild(newEl),添加到页面
  14. li.innerText = "item6";
  15. let htmlStr = "<li style='color:red'>item7</li>";
  16. ul.insertAdjacentHTML("beforeEnd", htmlStr); // 将html字符串直接解析为dom元素
  17. const frag = new DocumentFragment(); //如果大量添加元素应该使用文档片断完成
  18. for (let i = 0; i < 5; i++) {
  19. const li = document.createElement("li");
  20. li.textContent = "Hello " + (i + 1);
  21. frag.appendChild(li); //将生成的节点先临时挂载到文档片断中
  22. }
  23. ul.appendChild(frag);
  24. htmlStr = `
  25. <li style="color:violet">demo1</li>
  26. <li style="color:violet">demo2</li>
  27. <li style="color:violet">demo3</li>
  28. <li style="color:violet">demo4</li>
  29. <li style="color:violet">demo5</li>
  30. `;
  31. ul.insertAdjacentHTML("afterBegin", htmlStr);
  32. ul.insertAdjacentElement("afterBegin", li); // 用元素不用字符串
  33. ul.insertAdjacentHTML("afterBegin", "<li>item888</li>");
  34. //2. 更新
  35. let h3 = document.createElement("h3");
  36. h3.innerHTML = "晚上好";
  37. document.querySelector("li:nth-of-type(3)").replaceWith(h3);
  38. ul.replaceChild(h3, document.querySelector("li:last-of-type"));
  39. //3.移除
  40. ul.removeChild(document.querySelector("#list h3"));
  41. //4.遍历查询
  42. console.log(ul.children); // 获取所有子元素
  43. console.log(ul.children.length); // 获取子元素数量
  44. console.log(ul.childElementCount);
  45. console.log(ul.firstElementChild); // 第一个子元素
  46. console.log(ul.lastElementChild); // 最后一个
  47. console.log(ul.lastElementChild.parentElement); // 父节点
  48. const jiu = document.querySelector("#list li:nth-of-type(9)"); // 前一个兄弟
  49. jiu.style.background = "yellow";
  50. console.log(jiu.previousElementSibling.innerHTML);
  51. console.log(jiu.nextElementSibling.innerHTML); //后一个兄弟
  52. </script>
  53. </body>

效果预览:

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学