分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

JS中的对象

发布时间:2023-09-06 02:01责任编辑:白小东关键词:暂无标签

  对象

概念:简单说,所谓对象,就是一种无序的数据集合,有若干个“键值对”(key-value)构成。

var obj = { ???name : ‘tom‘, ???sex : ‘man‘};

上面代码中,大括号就定义了一个对象,这是一种字面量的写法,它被复制给变量 obj 。 这个对象内部包含了一个键值对(又称为“成员”), name 和 sex 是“键名”(成员的名称),字符串“tom”和“man”是“键值”(成员的值)。键名和键值之间用冒号分割。如果对象内部包含多个键值对,每个键值对之间用逗号分割。

  键名

对象的所有键名都是字符串,可以加引号也可以不加引号。如果键名是数值,会被自动转换成字符串。

var o = { ???1 : ‘a‘, ???3.2 : ‘b‘}

  上面以数值作为键名都会转换成字符串

如果键名不符合标识符的命名规则(比如第一个字符为数字,或者含有空格或运算符),也不是数字,则必须加上引号,否则会报错。

var o ={ ???‘1p‘ : "Hellow World", ???‘h w‘ : "Hellow World", ???‘p+q‘ : ‘Hellow World‘};

  上面的键值不符合标识符的命名规则,所以必须要加引号

对象的每一个“键名”又称为“属性”(property),它的“键值”可以是任何的数据类型。如果一个属性的值为函数,通畅把这个属性成为“方法”,它可以像函数那样调用。

var obj = { ???p: function(){...}};

  关于属性的操作

对象的属性有两种方法可以读取:

var obj = { ???name: ‘tom‘, ???sex:‘man‘};
obj.name  //"tom"
obj[‘sex‘]  //"man"

  可以通过对象名后面加点“.”的方式,也可以对象名后面加['']。

  注意:如果键名是数值的话,不能用“.”的方式获取对象的属性,这样会报错,而用方括号的方式引号加不加上都可以。

对象的属性可以动态的创建

var obj = { ???name: ‘tom‘, ???sex:‘man‘};obj.age = 20;obj.age ???//20

  上面代码对对象动态创建了一个属性且赋值。

  对象的操作

1)查看所有属性

可以用 Object.keys 方法查看对象的所有属性。

var obj = { ???name: ‘tom‘, ???sex:‘man‘};Object.keys(obj) ???//["name", "sex"]

2)删除对象的属性

用delete方法可以删除对象的属性,删除成功后返回true。

var obj = { ???name: ‘tom‘, ???sex:‘man‘};delete obj.sex  //trueobj.sex  //undefinedObject.keys(obj)  //["name"]

注意!删除一个本来就没有的属性是不会报错的,还是会返回true

3)in运算符

in运算符可以检查对象是否包含某种属性,如果包含返回true,反之返回false。

var obj = { ???name: ‘tom‘, ???sex:‘man‘};‘name‘ in obj ???//true

4)for...in 循环

for...in 循环可以遍历对象的所有属性

var obj = { ???name: ‘tom‘, ???sex:‘man‘};for(var keys in obj){ ???console.log(obj[i]);}//"tom"//"man"

  其他要点

对象的引用

如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量。

var o1 = {};var o2 = o1;o1.a = 1;console.log(o2.a); ???//1o2.b = 2;console.log(o2.b); ???//2

上面代码中,o1o2指向同一个对象,因此为其中任何一个变量添加属性,另一个变量都可以读写该属性。

此时,如果取消某一个变量对于原对象的引用,不会影响到另一个变量。

var o1 = {};var o2 = o1;o1 = 1;o2 // {}

上面代码中,o1o2指向同一个对象,然后o1的值变为1,这时不会对o2产生影响,o2还是指向原来的那个对象。

但是,这种引用只局限于对象,如果两个变量指向同一个原始类型的值。那么,变量这时都是值的拷贝。

var x = 1;var y = x;x = 2;y // 1

上面的代码中,当x的值发生变化后,y的值并不变,这就表示yx并不是指向同一个内存地址。

参考资料:http://javascript.ruanyifeng.com/grammar/object.html#toc4

JS中的对象

原文地址:https://www.cnblogs.com/ianyanyzx/p/9225751.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved