超适合0基础js对象笔记(10.)

简介: 超适合0基础js对象笔记(10.)


什么是对象?

对象(object):javascript是一种数据类型

也是一种无序数据集合

可以这样理解对象,比如你描述一个人她的特征,年龄,性别,身高都是她的信息

var person = {
    name: "John",
    age: 30,
    gender: "male"
};

对象的使用

1.对象声明语法

let 对象名 =new Object()

2.对象由属性方法组成

3.属性:数据描述性的信息被称为属性

语法:

let obj = {
        uname:'ljx',
        age:18,
        gender:女
       }

✨注意:

1.属性之间都是成对出现,包括属性名和值,他们之间用英文 : 分隔

2.多个属性之间使用英文逗号 , 隔开

3.属性就是依附在对象上的变量

对象操作语法

⏺️ 语法:对象名.属性

⏺️获取对象中的成员属性值

⏺️语法:对象名.属性=新 值

⏺️修改对象中成员的新值

⏺️语法:对象名.属性 =值

⏺️对象中添加成员值

⏺️语法:delete 对象名.属性

⏺️删除对象中的成员值

创建对象
        var o = {}
        //1.点语法创建对象
        //1.1添加一个成员
        //想对象里面添加一个叫做name的成员,值为‘jack’
        o.name = 'jack';
        o.age = 18;
        //1.2删除一个成员
        delete o.name 
        //1-3修改一个成员
          o.age=20
          //1-4查找一个成员
          console.log(o.age)
        console.log(o)

数组关联语法

  • 增:对象名[‘成员名’] = 值
  • 删: delete 对象名[ '成员名 ’ ]
  • 改: 对象名[‘成员名’] = 值
  • 查: 对象名[‘成员名’]
//数组关联语法
        var o = new Object()
        //1.操作对象
        o['name']='jack'
        //2.删除成员
        delete o['name']
        //3.修改成员
        o['age']=20
        //4.增加成员
        o['gender'] = '男'
        console.log(o)

对象的方法

方法调用语法:对象名.方法名

遍历对象

for … in

1.使用for in 语法来遍历对象

//遍历对象
    let obj ={
        uname:'pink',
        age:18,
        gender : '男'
    }
    for(let k in obj){
    console.log(k)//属性名 
    console.log(obj[k])//打印属性值
    }

注意:k= 获得对象的属性名,对象名[k ] =属性值

访问属性

1.使用点语法:

作用:快速读取对象属性,点语法左侧是引用对象的变量,右侧的变量名

var obj={ //定义对象
              x:1,
             }
             console.log(obj.x);  //1
             obj.x=2;
             console.log(obj.x); //2

2.Object.keys()

Object.keys() 是 ES5 新增的一个对象方法,该方法返回对象自身属性名组成的数组,它会自动过滤掉原型链上的属性,然后可以通过数组的 forEach() 方法来遍历

3.使用 Object.getOwnPropertyNames

Object.getOwnPropertyNames() 也是 ES5 新增的一个对象方法,该方法返回对象自身属性名组成的数组,包括不可枚举的属性,也可以通过数组的 forEach 方法来遍历

4.Object.getOwnPropertySymbols

Object.getOwnPropertySymbols() 方法返回对象自身的 Symbol 属性组成的数组,不包括字符串属性

5. Reflect.ownKeys

Reflect.ownKeys() 方法是 ES2015 (ES6) 新增的静态方法,该方法返回对象自身所有属性名组成的数组,包括不可枚举的属性和 Symbol 属性

6.Obejct.create():

Obejct.create():返回一个新的对象,并指定原型对象和属性

7.Object.getPrototypeOf

Object.getPrototypeOf():获取对象的prototype对象

属性描述符

  • value:属性值,默认值:undefined
  • writable:设置属性值可写, 默认值为true
  • enumerable:设置属性是否 可枚举默认为true
  • configurable:设置是否属性特性,默认值为TRUE,如果为false则无法删除属性,不能修改属性值,也不能修改属性描述符
...
//通过defineProperty将writable改为true
Object.defineProperty(obj,'foo', {
  writable: true
});
obj.foo = 2;
obj.foo; //2, foo的值成功被修改
  • get :取值器 默认值undefined
  • set:存值器 默认值undefined

注意:取值方法get()不能接收参数,存值方法set()只能接收一个参数,用于设置属性值

操作属性描述符

属性描述符是一个内部对象,无法直接读写,可以通过下面几个函数进行操作。

  • Object.getOwnPropertyDescriptor( ):可以读出指定对象私有属性的属性描述符。
  • Object.defineProperty( ):通过定义属性描述符来定义或修改一个属性,然后返回修改后的描述符。
  • Object.defineProperties( ):可以同时定义多个属性描述符。
  • Object.getOwnPropertyNames( ):获取对象的所有私有属性。
  • Object.keys( ):以数组的形式返回参数对象包含的可枚举的私有属性名
  • propertyIsEnumerable():对象实例方法,直接调用,判断指定的属性是否可枚举。

控制对象状态

JavaScript 提供了 3 种方法,用来精确控制一个对象的读写状态,防止对象被改变。

  • Object.preventExtensions:阻止为对象添加新的属性。
  • Object.seal:阻止为对象添加新的属性,同时也无法删除旧属性。等价于属性描述符的 configurable 属性设为false。注意,该方法不影响修改某个属性的值。
  • Object.freeze:阻止为一个对象添加新属性、删除旧属性、修改属性值。
    同时提供了 3 个对应的辅助检查函数,简单说明如下:
    Object.isExtensible:检查一个对象是否允许添加新的属性。
    Object.isSealed:检查一个对象是否使用了 Object.seal 方法。
    Object.isFrozen:检查一个对象是否使用了 Object.freeze 方法。

Object原型方法

Object内置原生方法:Object静态函数和Object原型方法

1.使用toString

作用:返回一个对象的字符串

function fn(x,y){//构造函数
            this.x=x;
            this.y=y;
        }
        var f=new fn(1,3)
        console.log(fn.toString())//返回该函数的源代码
        console.log(f.toString())//[object Object]

2.使用valueOf()方法

作用:valueOf()方法能够返回对象的值

//Date对象的valueOf()返回值是当前日期对象的毫秒数
        var o=new Date();
        console.log(o.toString);
        console.log(o.valueOf)
        console.log(Object.prototype.valueOf.apply(o))//"2023-04-18T00:07:07.261Z"

Object 静态函数

1.对象包装函数

Object()是一个类型函数,可以将值转换为对象,如果参数为空,或者为undedined和null将创建一个空对象

如果参数为数组、对象、函数、则会返回原对象,不进行转换

//3.类型检测函数
        function isObject(value){
            return value === Object(value);
        }
        console.log(isObject([]));//true
        console.log(isObject(true))//false
2.对象构造函数

Obect() 不仅可以包装对象,还可以当做构造函数使用,可以使用new

调用Object()函数

语法:var obj = =new Object();

总结

JavaScript中的对象是一种非常强大的数据类型,可以用于表示现实世界中的实体。对象由多个属性组成,每个属性由一个键和一个值组成。属性的值可以是任何数据类型,包括字符串、数字、布尔值、函数、甚至是其他对象。对象可以通过字面量和构造函数来创建,并可以使用点表示法和方括号表示法来访问属性。对象还可以拥有方法,方法可以通过对象来调用。在JavaScript中,可以通过原型链实现继承,从而扩展对象的属性和方法。

目录
相关文章
|
1月前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
1月前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
2月前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
49 0
|
1月前
|
JSON 前端开发 JavaScript
JavaScript中对象的数据拷贝
本文介绍了JavaScript中对象数据拷贝的问题及解决方案。作者首先解释了对象赋值时地址共享导致的值同步变化现象,随后提供了五种解决方法:手动复制、`Object.assign`、扩展运算符、`JSON.stringify`与`JSON.parse`组合以及自定义深拷贝函数。每种方法都有其适用场景和局限性,文章最后鼓励读者关注作者以获取更多前端知识分享。
18 1
JavaScript中对象的数据拷贝
|
1月前
|
自然语言处理 JavaScript 前端开发
[JS]同事看了我做的this笔记,直摇头,坦言:我还是参考启发博文吧
本文介绍了JavaScript中`this`关键字的重要性和使用规则。作者回顾了早期笔记,总结了`this`指向的各种情况,并分享了最新的理解。文章强调了`this`在不同上下文中的指向,包括对象方法、全局函数、箭头函数等,并提供了改变`this`指向的方法。适合JavaScript开发者参考。
48 2
|
1月前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
2月前
|
存储 JavaScript 前端开发
JavaScript 对象的概念
JavaScript 对象的概念
46 4
|
2月前
|
缓存 JavaScript 前端开发
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
JavaScript中数组、对象等循环遍历的常用方法介绍(二)
49 1
|
2月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
21 2
|
2月前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
35 0