码迷,mamicode.com
首页 > 编程语言 > 详细

我所不知的 javascript Object 的一些现象

时间:2018-03-08 14:13:50      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:数字   unicode   code   class   utf-8   log   方法   二次   定义   

1、我们都知道对象访问属性有两种方法,一种是使用 . 操作符,使用它添加的属性名必须满足标识符的命名规范;另一种是使用 [] 键访问的方法,可以接受任意UTF-8/Unicode字符串作为属性名,在ES6中它也可以添加可计算属性名。

  对象使用 [] 键访问的方法与 数组下标 [] 访问的方法有所不同,对象使用 [] 键访问,会先把属性名转换为字符串的形式,然后进行查找访问,即便属性名是一个数字或者数字也都不例外。

  可以观察以下例子:

var obj = {a:1,b:2,c:3};
obj[obj] = ‘this is obj‘;

输出obj:

技术分享图片

var obj1 = {d:4,e:5,f:6};
obj[obj1] = ‘this is obj1‘;

输出obj:

技术分享图片

从上面代码我们可以看出:对象在使用 [] 键访问时。会先将属性名转化为字符串的形式,也就是进行了一次 obj.toString() 的操作

技术分享图片

所以我们给对象添加的属性并不是 obj 而是 ‘[object Object]‘。因此在进行第二次赋值 obj[obj1] 时,仅仅是对 ‘[object Object]‘ 属性进行修改。

2、在 ES6 中可计算属性名的使用方法:

在普通的对象字面量中,属性名无论是不是添加了引号,都默认看做是字符串,所以在对象的字面量中无法使用 变量 ,在 ES6 中解决了这个问题。

普通的对象字面量定义对象:

var myObj = {
     a : 1,
     b : 2,
     c : 3
}

使用可计算属性名的形式:

var str = ‘str‘;
var obj = {
    [str+‘1‘]:1,
    [str+‘2‘]:2,
    [str+‘3‘]:3
};

打印 obj :

技术分享图片

 

我所不知的 javascript Object 的一些现象

标签:数字   unicode   code   class   utf-8   log   方法   二次   定义   

原文地址:https://www.cnblogs.com/z-one/p/6646708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!