js对象

对象就是一种无序的数据集合,若干个“键值对”(key-value)构成。

var obj = {
  p: 'hello world'
};

key值value值之间用冒号,每个键值之间用逗号隔开。

{key : value}   //是JS对象字面量写法。
一般是如此生成对象的:
Object()               //  生成了一个{}
var  obj = Object()         // obj = {}
o    = {}              //    生成了一个{} 

大括号的形式就是一种字面量的写法,简单啊。包括后面学数组时,用[]表示,也是如此,简单啊。

基本使用

var company = {
  name : 'jirengu'
}
company                      //   出现了{name : 'jirengu'},类型显示Object。

var company = {
    name : 'jirengu',
  age : 3,
  sayHello : function() {
        console.log ('hello world')
       }
}
 company.name                  // "jirengu"
company.age                        //  3
company.sayHello()                //hello world  ,这里是函数,要执行的话,后面加括号哦。
获取目标key的value值除了这种还有一种——
company['name']                   // "jirengu"
千万不要这样写:company[name],这个意思是把name当成一个变量了,
如果变量的属性是a,就是获取a了。实际上这里的变量只有company,
数据里的只有这个变量的属性也就是key的value值了。

var o = {
0.7 : 'hello'
}
o[0.7] // ' hello' 属性是数值的话,比较特殊,可以加引号,或不加。
0['0.7'] // 'hello'


上面的用法就是查看的用法,一共两种写法,关乎语法的意思了,记住就行。下面看看如何赋值给相应的key?
company.addr = '杭州市'
compny['business'] = '前端课程'
company                                      // 查看就有了这些新增的key-value了。

用for循环遍历对象里的每个属性,把key当成变量了。
for (var key in company) {
  console.log(key)
     // console.log(company[key])
}
先把console.log(company[key])注释掉,再运行,得到
name  age sayHello addr business
这时候,key就是变量,变量里存的就是key对应的名称的字符串,name等等。
这时候,字符串是变量的话,就可以这样:
company[key]  === company['name'] 
当然这时候company.key的意思还是获取属性是key的值,是错的写法。

键名

也就是key,加不加''都可以的,但是一些特殊字符,比如两个单词,有空格的,加。
如果键名是数值的话,自动转化成字符串,因为属性必须是字符串。
如果键名不符合标识符的命名条件(比如第一个字符是数字,或有空格或运算符),也不是数字,就必须加上引号,否则报错。

var o = {
  '1p' : 'hello world',
  'h b': 'hello',
  'p+q' : 'hello'
}
o ['h b']                       // 访问也要加引号了。
o .h b                              //报错了。
o.'h b'                            //报错了。

JS的保留字可以不加引号当key的,比如for ,class。

属性

属性property就是键名,每个属性的值可以是任何的类型。一个属性值是函数,把这个属性称方法。

var o = {
  p : function(x) {
    return 2*x;
 }
}
o.p(1)                             // 2

属性可以动态创建的:

var obj = {}
obj.foo = 123
obj.foo                    // 123       创建,然后赋值。

对象的引用

意思就是不同的变量同时引用同一个对象,指向同一个堆内存,如果操作一个变量,然后改变了堆内存数据,其他变量都同步改变了哦。

表达式还是语句?

{foo : 123}  
{foo :123}.foo           //报错了。  

直接写这代码,可以是表达式,有foo属性的对象。也可以是语句,表示一个代码区块,foo是标签,123是表达式。
为了避免歧义,JS规定,行首大括号一律是语句,是代码块 ,也就是说上面的在浏览器看来就是123。要说表达式,也就是对象,必须用括号包裹:

({foo : 123}).foo              //  123,括号可以把里面的东西转化为表达式。
  • eval
eval('console.log(123)')         // 123  ,eval可以把一个字符串当成JS语句去执行。
eval ('{foo:123}')        // 123。把{foo:123}当成JS执行,如果当成对象的话,怎么会是123呢?
eval('({foo;123})')     // {foo;123}。 同上,结果是对象,所以,加括号就当成对象了。

把字符串当成对象去执行,用eval。有风险,后续会讲,现在不用了。

检测某个变量是否声明

'abc' in window                             //false
var hello
'hello' in window                     //true

查看所有属性

var o = {
  key1 : 1,
  key2 : 2
}
Object.keys(o)        //['key1','key2'],数组形式哦。

delete命令

删除对象的属性,成功后返回true。

var o = {p:1}
  Object.keys(o)              // ['p']
delete o.p                       //true
o.p                                 //undefined
Object.keys(o)                  //[  ]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容