Blogger Information
Blog 18
fans 1
comment 0
visits 16255
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
关于js的构造函数和dom操作
空瓶子
Original
848 people have browsed it

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>

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