批改状态:合格
老师批语:
构造函数是生成对象的模板,一个构造函数可以生成多个对象
原型链的特点有:读取对象的某个属性时,先寻找对象本身的属性,如果找不到,就到它的原型去找。如果直到最顶层的Object.prototype还是找不到,则返回undefined。
任何一个函数都有一个原型属性: prototype
function f1() {}//用console.dir(f1)在控制台查看console.dir(f1);
用console.dir(f1)在控制台查看
 {
// 1. 创建出一个新对象,用this来表示(伪代码,系统自动创建并执行)
// const this = new User;
// 2.初始化对象,给这个对象添加一个自定义属性,用来和其它实例进行区分this.name = name;this.email = email;// 3. 返回这个对象return this;}const user = new User("admin", "admin@php.cn");console.log(user);
可以用instanceof来看看是不是user对象的实例 是返回true 否则返回false;
console.log(user instanceof User);
我们可以给原型属性设置自定义属性与其他当前对象的其他实例共享
user.__proto__.salary = 8899;console.log(user.salary);
实例的原型永远指向它的构造函数的原型,实例的原型从构造函数的原型继承成员(属性/方法)
需要被所有类实例共享的成员,应该写到构造函数的原型上
User.prototype.nation = "CHINA";console.log(user.nation, user1.nation);
这样user,user1这两个实例都能继承到当前对象的原型属性里的nation属性
属性通常不应该共享的,它是区分不同对象的标志,方法更适合共享
User.prototype.show = function () {return { name: this.name, email: this.email, salary: this.salary };};console.log(user.show());console.log(user1.show());
使用css选择器是最直观的
<script>const lis = document.querySelectorAll("#ul li");console.log(lis);</script>
querySelectorAll返回的Nodelist是浏览器内置的集合类型,属性类数组
用Array.from()和 …rest,都可以转为真正的数组
<script>const lis = document.querySelectorAll("#ul li");console.log(lis);let lisArr = Array.from(lis);console.log(lisArr);let larr = [...lis];console.log(larr);</script>
Nodelist可以直接用forEach()遍历
<script>const lis = document.querySelectorAll("#ul li");lis.forEach(item => console.log(item));</script>
注:哪怕只获取到一个,但返回的仍然是一个集合
有几个快捷方式,用来快速 获取某一个或某一类元素
分别拿到head,body,title元素
<script>// headconsole.log(document.head);// bodyconsole.log(document.body);// titleconsole.log(document.title);// 拿到所有图片console.log(document.images);</script>
表单元素
<script>// 表单元素// formsconsole.log(document.forms);//这里返回的表单元素的集合// 拿到某一个表单元素console.log(document.forms[0]);</script>
为列表添加一个新的li元素
<script>const ul = document.querySelector("#list");console.log(ul);// 1. 创建元素const li = document.createElement("li");// parent.appendChild(newEl),添加到页面ul.appendChild(li);</script>
图例:
innerText为li元素添加文本
<script>const ul = document.querySelector("#list");console.log(ul);// 1. 创建元素const li = document.createElement("li");// parent.appendChild(newEl),添加到页面ul.appendChild(li);li.innerText = "item6";</script>
图例:

innerHTML为li元素添加文本并解析为html元素
<script>const ul = document.querySelector("#list");console.log(ul);// 1. 创建元素const li = document.createElement("li");// parent.appendChild(newEl),添加到页面ul.appendChild(li);// innerHTML为li元素添加文本并解析为html元素li.innerHTML = '<i style="color:red">item6</i>';</script>
图例:
insertAdjacentHTML()将html字符串直接解析为dom元素
<script>let htmlStr = "<li style='color:red'>item7</li>";// 将html字符串直接解析为dom元素ul.insertAdjacentHTML("beforeEnd", htmlStr);</script>
图例:
如果大量添加元素应该使用文档片断完成
createdocumentfragment()方法创建了一虚拟的节点对象,节点对象包含所有属性和方法。
当你想提取文档的一部分,改变,增加,或删除某些内容及插入到文档末尾可以使用createDocumentFragment() 方法。
你也可以使用文档的文档对象来执行这些变化,但要防止文件结构被破坏,createDocumentFragment() 方法可以更安全改变文档的结构及节点。
<script>const ul =document.querySelector('.ul');const frag = document.createDocumentFragment();//const frag = new DocumentFragment() === document.createDocumentFragment() 等同;for(i=0;i<5;i++){// 创建li元素let li = document.createElement('li');// 添加文本li.innerText = 'a'+i++;// 将生成的节点先临时挂载到文档片断中frag.appendChild(li);}ul.appendChild(frag);</script>
图例:
123
replaceChild() 方法用新节点替换某个子节点。
这个新节点可以是文档中某个已存在的节点,或者您也可创建新的节点。
语法:
node.replaceChild(newnode,oldnode)
newnode为必需。您希望插入的节点对象。
oldnode为必需。您希望删除的节点对象。
<script>let h3 =document.createElement('h3');h3.innerHTML = "晚上好";let div1 = document.querySelector('#div1');console.log(div1);let p1 = document.querySelector('#p1');div1.replaceChild(h3,p1);</script>
实例:
将p标签更新为h3
3.移除
<script>let ul = document.querySelector('#div1')div1.removeChild(document.querySelector("#p1"));</script>
遍历查询 快捷指令
<script>// 4. 遍历查询let ul = document.querySelector('#ul2');// 获取所有子元素console.log(ul.children);// 获取子元素数量console.log(ul.children.length);console.log(ul.childElementCount);// 第一个子元素console.log(ul.firstElementChild);// 最后一个console.log(ul.lastElementChild);// 父节点console.log(ul.lastElementChild.parentElement);// 前一个兄弟const jiu = document.querySelector("#ul2 li:nth-of-type(3)");console.log(jiu);console.log(jiu.previousElementSibling);// 后一个兄弟console.log(jiu.nextElementSibling);</script>
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号