建设网站需要哪些资质,网站建设的软件是哪个,网站vr视角怎么做,网站文字模板认识对象 对象#xff08;object#xff09;是“键值对”的集合#xff0c;表示属性和值的映射关系。 对象的语法 k和v之间用冒号分隔#xff0c;每组k:v之间用逗号分隔#xff0c;最后一个k:v对后可以不书写逗号。 属性是否加引号 如果对象的属性键名不符合JS标识符命名规…认识对象 对象object是“键值对”的集合表示属性和值的映射关系。 对象的语法 k和v之间用冒号分隔每组k:v之间用逗号分隔最后一个k:v对后可以不书写逗号。 属性是否加引号 如果对象的属性键名不符合JS标识符命名规范则这个键名必须用引号包裹 属性的访问 可以用“点语法”访问对象中指定键的值。 如果属性名不符合JS标识符命名规范则必须用方括号的写法来访问。 如果属性名以变量形式存储则必须使用方括号形式。 属性的更改 直接使用赋值运算符重新对某属性赋值即可更改属性。 属性的创建 如果对象本身没有某个属性值则用点语法赋值时这个属性会被创建出来。 属性的删除 如果要删除某个对象的属性需要使用delete操作符。 对象的方法 如果某个属性值是函数则它也被称为对象的“方法”。 方法的调用 使用“点语法”可以调用对象的方法。 方法和函数 方法也是函数只不过方法是对象的“函数属性”它需要用对象打点调用。 对象的遍历 和遍历数组类似对象也可以被遍历遍历对象需要使用for...in...循环。使用for...in...循环可以遍历对象的每个键。 对象的深浅克隆
对象是引用类型值 对象是引用类型值这意味着 不能用var obj2 obj1这样的语法克隆一个对象。使用或者进行对象的比较时比较的是它们是否为内存中的同一个对象而不是比较值是否相同。 对象的浅克隆 浅克隆只克隆对象的“表层”如果对象的某些属性值又是引用类型值则不进一步克隆它们只是传递它们的引用。使用for...in...循环即可实现对象的浅克隆。 !DOCTYPE html
html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title
/headbodyscriptvar obj1 {a: 1,b: 2,c: [44, 55, 66]};// 实现浅克隆var obj2 {};for (var k in obj1) {// 每遍历一个k属性就给obj2也添加一个同名的k属性// 值和obj1的k属性值相同obj2[k] obj1[k];}// 为什么叫浅克隆呢比如c属性的值是引用类型值那么本质上obj1和obj2的c属性是内存中的同一个数组并没有被克隆分开。obj1.c.push(77);console.log(obj2); // obj2的c属性这个数组也会被增加77数组console.log(obj1.c obj2.c); // truetrue就证明了数组是同一个对象/script
/body/html 对象的深克隆 和数组的深克隆类似对象的深克隆需要使用递归。深克隆克隆对象的全貌不论对象的属性值是否又是引用类型值都能将它们实现克隆。 !DOCTYPE html
html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title
/headbodyscriptvar obj1 {a: 1,b: 2,c: [33, 44, {m: 55,n: 66,p: [77, 88]}]};// 深克隆function deepClone(o) {// 要判断o是对象还是数组if (Array.isArray(o)) {// 数组var result [];for (var i 0; i o.length; i) {result.push(deepClone(o[i]));}} else if (typeof o object) {// 对象var result {};for (var k in o) {result[k] deepClone(o[k]);}} else {// 基本类型值var result o;}return result;}var obj2 deepClone(obj1);console.log(obj2);console.log(obj1.c obj2.c); // falseobj1.c.push(99);console.log(obj2.c); // obj2不变的因为没有“藕断丝连”的现象obj1.c[2].p.push(999);console.log(obj2.c[2].p); // obj2不变的因为没有“藕断丝连”的现象/script
/body/html