JavaScript|JavaScript对象


JS 对象

    • 1.?JS 对象
      • JS 对象是什么?
      • JS 对象数据类型
      • JS 对象的访问
    • 2.?JS 对象的声明方法
    • 3.?JS 对象中的this
    • 4.?一些常用的操作方法
      • 4.1) Object.keys(obj), Object.getOwnPropertyNames(obj)
      • 4.2) Object.values(obj)
      • 4.3) Object.entries(obj), Object.fromEntries()
      • 4.4) Object.assign()
      • 4.5) 扩展运算符
      • 4.6) 删除对象属性
      • 4.7) for...in遍历对象
      • 4.8) hasOwnProperty 检测属性

1.?JS 对象 JS 对象是什么?
JS 对象就是一系列属性的集合,一个属性包含一个名和一个值。一个属性的值可以是函数,这种情况下属性也被称为方法。
JS 对象数据类型
在 JS 中,对象的类型是引用类型。
JS 对象的访问
不同于C++等其它语言,JS 对象全是 public。
2.?JS 对象的声明方法 这里介绍四种基础的声明方法:
//通过字面量形式声明对象 let obj = {name: 'milk', getName: function() {return this.name; } }// 通过 new 操作符声明对象 let obj = new Object(); obj.name ="milk"; // 通过函数声明的方式声明对象 function creatObj(nameVal) {this.name = nameVal; } let obj = new createObj("milk"); /* 原型方式声明对象: 原型方式是将该对象的属性/方法写在他的prototype属性所指的对象上。 (每一个函数或者说对象都有一个prototype属性,这个属性以对象的形式存在) */ function drinking() { }; drinking.prototype.name = "milk"; drinking.prototype.pride = 8; let obj = new drinking(); console.log(obj.name); // milk

3.?JS 对象中的this 在对象方法中, this 指向调用它所在方法的对象。
举个例子:
let person = {fname: '序员', lname: '程', fullname: function() {return this.lname + this.fname; } }let get_full_name = person.fullname(); console.log(person.fullname()); // 程序员 console.log(get_full_name); // 程序员

4.?一些常用的操作方法 4.1) Object.keys(obj), Object.getOwnPropertyNames(obj)
let drinking = {name : "milk" }; // 给一个不可枚举属性 pride Object.defineProperty(drinking, "pride", {value : 8, enumerable : false }); // 获取可枚举的属性键 console.log(Object.keys(drinking)); // ['name']// 获取所有的属性键 console.log(Object.getOwnPropertyNames(drinking)); // ['name', 'pride']

4.2) Object.values(obj)
// 获取可枚举对象的属性值 let drinking = {name : "milk", pride : 8 }console.log(Object.values(drinking)); // ['milk', 8]

4.3) Object.entries(obj), Object.fromEntries()
let drinking1 = {name : "milk", pride : 8 }// 获取可枚举对象的键值对,返回它们组成的数组 console.log(Object.entries(drinking1)); //[['name', 'milk'], ['pride', 8]]// Object.fromEntries() 把键值对列表转换为对象 let arr = [['name', 'milk'], ['pride', 8]]; let drinking2 = Object.fromEntries(arr); console.log(drinking2); // {name: 'milk', pride: 8}

4.4) Object.assign()
// 将一个或多个对象的属性复制给目标对象,是浅拷贝let drinking1 = {name1 : "milk", pride1 : 8 }; let drinking2 = {name2 : "tea", pride2 : 12 }; let drinking = Object.assign(drinking1, drinking2); console.log(drinking); // {name1: 'milk', pride1: 8, name2: 'tea', pride2: 12}

4.5) 扩展运算符
// ... 可以用来创建对象,是一个浅拷贝 let drinking1 = {name1 : "milk", pride1 : 8 }; let drinking2 = {name2 : "tea", pride2 : 12 }; let drinking = { ...drinking1, ...drinking2}; console.log(drinking); // {name1: 'milk', pride1: 8, name2: 'tea', pride2: 12}

4.6) 删除对象属性
let drinking = {name : "milk", pride : 8 }; delete drinking.pride; console.log(drinking); // {name: 'milk'}

4.7) for…in遍历对象
// 遍历对象可枚举属性 let drinking = {name : "milk", pride : 8 }; for (i in drinking) {console.log(i); }

【JavaScript|JavaScript对象】JavaScript|JavaScript对象
文章图片

4.8) hasOwnProperty 检测属性
// 检测对象自身是否包含指定的属性 // 不检测原型链上继承的属性,即可以用来避免for...in遍历继承来的属性let drinking = {name : "milk", pride : 8 }; console.log(drinking.hasOwnProperty('name')); // true console.log(drinking.hasOwnProperty('weight')); // false

    推荐阅读