博客列表 >关于js的构造函数和dom操作

关于js的构造函数和dom操作

空瓶子
空瓶子原创
2021年01月10日 22:23:52856浏览

1. 举例说明构造函数的原型与对象原型之间的区别与联系

1、任何一个函数都有一个原型属性:prototype
2、构造函数是“对象工厂”,是用来创建对象的。
3、对象也叫实例
4、js 中没有“类”的概念,它是基于原型的语言,所以可简单的将构造函数当成“类”
5、构造函数必须使用“new”来调用,普通函数不用
6、new 的过程就是类的实例化过程,就是创建一个对象的过程
7、创建对象的过程,就叫“类的实例化”

demo 代码

  1. <script>
  2. // 声明一个构造函数
  3. function User(name, email) {
  4. this.name = name;
  5. this.email = email;
  6. }
  7. // 通过new关键字调用构造函数
  8. const user = new User("admin", "tp@php.cn");
  9. console.log(user);
  10. // 在user原型上创建一个salary = 8899属性
  11. user.__proto__.salary = 8899;
  12. console.log(user.salary);
  13. const user1 = new User("peter", "peter@php.cn");
  14. console.log(user1);
  15. console.log(user1.salary);
  16. console.dir(User);
  17. // 实例的原型永远指向它的构造函数的原型,实例的原型从构造函数的原型继承成员(属性/方法)
  18. console.log(user1.__proto__ === User.prototype);
  19. // 需要被所有类实例共享的成员,应该写到构造函数的原型上
  20. User.prototype.nation = "中国";
  21. console.log(user.nation, user1.nation);
  22. // 属性通常不应该共享的,它是区分不同对象的标志,方法更适合共享
  23. User.prototype.show = function () {
  24. return { name: this.name, email: this.email, salary: this.salary };
  25. };
  26. console.log(user.show());
  27. console.log(user1.show());
  28. </script>

构造函数的原型与对象原型之间的区别与联系
实例的原型永远指向他的构造函数原型,实例的原型从构造函数的原型继承成员(属性/方法),需要被继承的所有类实例共享的成员,应该写在构造函数原型上。通常属性不应该被共享,他们是区分不同对象的标志,方法更适合共享。

2. 举例演示获取 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. // 1.获取满足所有条件的元素
  14. const lis = document.querySelectorAll("#list li");
  15. console.log(lis);
  16. let first = document.querySelectorAll("#list li:first-of-type");
  17. console.log(first);
  18. // 2. 获取满足条件的第一个元素
  19. first = document.querySelector("#list li");
  20. console.log(first);
  21. // head
  22. console.log(document.head);
  23. // body
  24. console.log(document.body);
  25. // title
  26. console.log(document.title);
  27. // forms
  28. console.log(document.forms[0]);
  29. console.log(document.forms.item(0));
  30. console.log(document.images);
  31. </script>
  32. </body>

3. dom 元素的增删改查常用操作,全部实例演示,并配图

demo

  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. <script>
  10. // 获取dom元素
  11. const ul = document.querySelector("#list");
  12. // console.log(ul);
  13. // 1.创建元素
  14. const li = document.createElement("li");
  15. // parent.appendChild(newEl),添加到页面
  16. ul.appendChild(li);
  17. li.innerText = "item6";
  18. li.innerHTML = '<i style="color:red">item6</i>';
  19. // 将html字符串直接解析为dom元素
  20. let htmlStr = "<li style='color:red'>item7</li>";
  21. ul.insertAdjacentHTML("beforeEnd", htmlStr);
  22. ul.insertAdjacentHTML("afterBegin", "<li>item888</li>");
  23. // 2. 更新
  24. let h3 = document.createElement("h3");
  25. h3.innerHTML = "晚上好";
  26. document.querySelector("li:nth-of-type(3)").replaceWith(h3);
  27. ul.replaceChild(h3, document.querySelector("li:last-of-type"));
  28. // 3.移除
  29. ul.removeChild(document.querySelector("li:nth-of-type(2)"));
  30. // 4. 遍历查询
  31. // 获取所有子元素
  32. console.log(ul.children);
  33. // 获取子元素数量
  34. console.log(ul.children.length);
  35. console.log(ul.childElementCount);
  36. // 第一个子元素
  37. console.log(ul.firstElementChild);
  38. // 最后一个
  39. console.log(ul.lastElementChild);
  40. // 父节点
  41. console.log(ul.lastElementChild.parentElement);
  42. // 前一个兄弟
  43. const san = document.querySelector("#list li:nth-of-type(3)");
  44. san.style.background = "yellow";
  45. console.log(san.previousElementSibling.innerHTML);
  46. // 后一个兄弟
  47. console.log(san.nextElementSibling.innerHTML);
  48. </script>
  49. </body>

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议