Blogger Information
Blog 46
fans 0
comment 0
visits 39602
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
演示构造函数的原型与对象原型的区别, dom元素的常用方法与增删改常用操作
lus菜
Original
736 people have browsed it

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

  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>

效果预览:

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