跳到主要内容

16-JavaScript 对象的应用

对象的增删改查

增加删除修改查找
p.name = "lnj";delete p.name;p.name = "lnj";console.log(p.name);
p["name"] = "zs";delete p["name"];p["name"] = "ww";console.log(p["name"]);
p["say"] = function(){console.log("hello world");}delete p.say;和增加对象一样直接进行覆盖即可p.say();

对象的遍历

  • 可以通过高级 for 循环来遍历对象for(let key in obj){}
  • 代码的含义: 将指定对象中所有的属性和方法的名称取出来了依次的赋值给 key 这个变量
function Person(myName, myAge){
this.name = myName;
this.age = myAge;
this.say = function(){
console.log(this.name, this.age);
}
}
let p = new Person("LNJ", 34);

for(let key in p){
if(p[key] instanceof Function){
continue;
}

console.log(p[key]);

对象的解构赋值

  • 和数组解构赋值相似,将数值单位换成对象,将[]换成{}
let { name, age, height = 1.8 } = { name: 'lnj', age: 34 }
// 没有输入默认值,返回值为undefined

JavaScript 对象拷贝

深拷贝

  • 修改新变量的值不会影响原有变量的值
  • 默认情况下基本数据类型都是深拷贝

浅拷贝

  • 修改新变量的值会影响原有的变量的值
  • 默认情况下引用类型都是浅拷贝

详细规则涉及内存空间的分配,可参考方方“数据内存图”解析

三大对象

本地对象、宿主对象、内置对象

宿主对象: 指 JavaScript 运行环境, js 可以在浏览器中运行, 也可以在服务器上运行(nodejs) 对于嵌入到网页中的 JS 来说,其宿主对象就是浏览器, 所以宿主对象就是浏览器提供的对象,服务器是无法使用的。 包含: Window 和 Document 等,所有的 DOM 和 BOM 对象都属于宿主对象。

本地对象: 与宿主无关,无论在浏览器还是服务器中都有的对象,就是 ECMAScript 标准中定义的类(构造函数)。 在使用过程中需要我们手动 new 创建 例如:Boolean、Number、String、Array、FunctionObject、Date、RegExp 等。

内置对象: 与宿主无关,无论在浏览器还是服务器中都有的对象 ECMAScript 已经帮我们创建好的对象。 在使用过程中无需我们手动 new 创建 例如:Global、Math、JSON