js对象属性的命名规则

JS标识符的命名规则,即变量的命名规则:

  • 标识符只能由字母、数字、下划线和‘$’组成
  • 数字不可以作为标识符的首字符

对象属性的命名规则

  • 通过[]操作符为对象添加属性时,属性名称可以是任何字符串(包括只包含空格的字符串和空字符串);
  • 通过.操作符为对象添加属性时,属性名称必须是合法的标识符名称;
  • 如果属性名包含非法的标识符字符,则只能采用obj[“propertyName”]的形式;
  • 如果属性名是合法的标识符,读取时即可以采用obj.propertyName,也可以采用obj[“propertyName”]的形式;

举例:

var obj = new Object();
obj["home addr"]="Tianjin";
obj["[email protected]#$%"]="[email protected]#$%";
obj[""]="empty string";
obj[" "]="string contains only space";

在控制台中查看如下:

纯数字属性名的特殊性

  纯数字属性名的使用比较特殊,可以通过对象字面量和obj[number]的形式为对象添加纯数字属性,解释器会自动将数字转换为数字字符串。

  定义实例:

var obj = {1:"first"}
obj[2]="second";
obj["3"]="third";

  以上三种为对象添加纯数字属性的方法是等效的,控制台查看如下:

  读取的方式有两种:

  • obj[number]
  • obj["number"]

  需要注意,采用obj.number的方式读取纯数字属性名称时浏览器会报错,如下

布尔属性名的特殊性

布尔属性名和纯数字属性名有着相似的行为,如下

采用[]操作符读取对象属性时,js解释器执行的动作

采用obj[propertyName]的形式读取或创建对象属性时,解释器首先会检查propertyName是值类型字面量还是用户定义的变量,如果propertyName是值类型的字面量,则解释器自动将其转换为字符串后再读取或创建属性,如obj[1],obj[true]会被转换成obj["1"]、obj["true"].

如果propertyName是变量名称(或者是表达式),则解释器会读取变量内容(或对表达式求值),如果变量的值是字符串,则直接读取属性,如果是其他类型的数据,则转换为字符串后再读取属性。举例如下:

定义对象:

定义变量:

读取属性:

更特殊的,为obj添加undefined属性:

使用未初始化的变量c读取obj的undefined属性:

由于c没有初始化,所以将c转换为字符串的结果是“undefined”,而obj存在“undefined”属性。

时间: 2024-11-06 01:16:33

js对象属性的命名规则的相关文章

js对象属性 通过点(.) 和 方括号([]) 的不同之处

//    js对象属性 通过点(.) 和 方括号([]) 的不同之处 //    1.点操作符: 静态的.右侧必须是一个以属性名称命名的简单标识符.属性名用一个标识符来表示.标识符必须直接出现再js程序中, //它们不是数据类型,因此程序无法修改它们. //    2.中括号操作符: 动态的.方括号里必须是一个计算结果为字符串的表达式,属性名通过字符串表示.字符串是js的数据类型, //再程序运行时可以修改和创建它们. // 主要有以下区别:     //1.[]--可以用变量作为属性名或访问

遍历js对象属性

<script type="text/javascript"> var p = { a:'a', e:{ a:'a', c:'c' }, b:'1', c:{ a:2, x:'fffff', y:{ ee:'fff', f:200 } } } ; //遍历js对象属性 var ObjInfo = { /** @param obj 要遍历的对象 @param placeholder 占位符,排版用,如空格 */ info : function(obj,placeholder)

JS对象属性中get/set与getter/setter是什么

在js属性描述符这部分有几个较难理解的名词概念,本文旨在描述对它们的理解,主要包括:[[Get]]/[[Put]].get/set.getter/setter几个概念的阐述,数据属性和访问器属性. 属性 首先我们要搞清楚属性的概念,属性是存储在特定命名位置的值,是对象的内容,属性并不直接存储在对象容器内部.属性有两种类型:数据属性和访问器属性.属性具备了属性描述符,用来描述属性拥有的特性. 属性描述符 属性描述符用来描述属性特性的(只有在内部才能用的特性),配置属性是否可读,是否可写,是否可枚举

js对象-属性遍历

为了加强js对象的认知,又刷了一题. 直接上题目: 找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)1.返回数组,格式为 key: value2.结果数组不要求顺序 示例: //输入 var C = function() {this.foo = 'bar'; this.baz = 'bim';}; C.prototype.bop = 'bip'; iterate(new C()); //输出 ["foo: bar", "baz: bim&quo

js对象属性特征

enumerable和configurable (function(){ 'use strict'; var point={x:1,y:2,z:3}; Object.defineProperty(point,'x',{ enumerable:false,//对象属性是否可枚举 configurable:false //对象属性是否可配置,不能删除,注意值是可以修改的 }); delete point.x;//x属性不可配置,所以x属性没有被删除,在严格模式下会抛出错误,非严格模式忽略 conso

js 对象属性遍历

function 对象属性遍历(){ var obj = {x:1,y:2,c:3};for (var name in obj){ alert ( obj[name] )} } function 数组(){ var 数组=[1,2,3,[1,2,4,5,7,8],4,5]; //数组嵌套数组 var 数组2=[ {x:100}, 2, [7,8,9], function(){ return 999; }(), "abc" ] var arr =new Array(10); arr[20

js对象属性与Bom

1JavaScript 的对象 1.1字符串 1.2Array对象 1.3Date对象 1.4Math对象 1.5Function对象(重点) 2 Bom对象 1   JavaScript对象 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array.Date.RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是基于对象实现的. 1.1字符串对象 字符串

JS对象属性

1.数据属性 可以是js基本数据类型,对象类型,以$开始的属性表示私有属性, 具有value,可写性,可配置性(通过自有的方法配置),可枚举性,分别通过属性描述符value,writeable,configurable,enumerable标示 2.存取器属性(类似于面向对象语言中的方法) 具有读取,写入,可配置性(通过自有的方法配置),可枚举性(外界访问),通过set,get设置writeable,configurable,enumerable set setName(){}, get get

js对象属性名驼峰式转下划线

一.题目示例: 思路: 1.匹配属性名字符串中的大写字母和数字 2.通过匹配后的lastIndex属性获取匹配到的大写字母和数字的位置 3.判断大写字母的位置是否为首位置以及lastIndex是否为0,为0则表示匹配结束 4.将存放位置的数组进行从小到大排序,排序后将属性名按照字符串的slice方法切割并使用下划线重组 5.遍历对象的属性名并使用函数改变为新的命名,从新赋值到新的对象上(也可以使用改变对象的ES6新语法) 6.注意,每次在调用函数后,需要清空之前存放位置的数组 二.实现代码 le