javascript对象访问

javascript中创建对象可以这样:

var obj = {
        name : "sam",
        age : 27,
        sex : "boy"
    }

也可以这样:

var obj = {
        "name" : "sam",
        "age" : 27,
        "sex" : "boy"
    }

不加引号是简化写法,加引号的是标准写法,当字段名包含某些特殊符号如 - 时,不能使用简化写法。

{
        z-index: 10 //错
}
{
        ‘z-index‘:10//正确
}

综上,规范起见,最好都按照标准写法来编写代码。
    另外,在访问对象属性时出现这个情况
    document.write(obj[name]);页面输出undefined
    document.write(obj[age]);firebug监控报错:age is not defined
    需要说明的是,这种访问对象属性的方法是错误的,正常的方法是obj.name或者obj["name"],这里拿出来是为了阐述上面提到的这个一个报错一个不报错的问题
    javascript中,如果一个变量未定义就直接使用,如以下代码:
    alert(age);
    页面不会输出任何信息,firebug监控报错:age is not defined
    如果定义了但未初始化,如以下代码:
    var age;
    alert(age);
    页面输出:undefined
    再回到上面的问题
    document.write(obj[age]);firebug监控报错:age is not defined,这段代码是没问题的,obj[age]是错误的访问对象方法,age没有被定义过,所以报错信息:age is not defined
    但是document.write(obj[name]);这段代码为什么就输出了undefined呢,name同样是未被定义过的,只有在被定义过且没有被初始化才会输出undefined,这是为什么?
    原来name这个属性是window对象自身就拥有的,我又没有在代码中重新定义覆盖掉,所以在document.write(obj[name])被自动识别为window的name属性,因为未被初始化,所以输出undefined

然后为了进一步验证以上的结论,脱离这个环境继续做测试,有以下代码:
    document.write(age);
    firebug监控报错:age is not defined 页面未输出任何信息,OK正常
    document.write(name);
    运行后发现预想的undefined值并未出现,页面是空白的,没有输出任何信息,于是推测name的默认值为一个空的字符串,测试代码如下:
    document.write(name + 123 + 456);
    页面输出123456,推断正确

所以上面:document.write(obj[name]);输出undefined背后其实发生了这些事:
    name = "";
    document.write(obj[name])等价于document.write(obj[""]);

时间: 2024-11-11 05:30:54

javascript对象访问的相关文章

JavaScript对象访问器属性

对象访问器就是setter和getter,他们的作用就是 提供另外一种方法来获取或者设置对象的属性值, 并且在获取和设置的时候,可以用一定的其他操作. 看下面代码: <script> var person = { _name : "abc", //注意此处的_name有一个下划线 }; Object.defineProperty(person,"name",{ //注意第二个参数的前面没有下划线,所以_name和name是两个不同的属性 set : fu

javascript对象属性和数组的访问

javascript对象属性的访问 假如有对象test:var test = {  "a":1,  "b":2};直接访问对象test的属性a的值,有两种方法: 1.test.a; 2.test["a"];   (注意这里要用引号) 但若是用for/in语句访问对象的属性值,则必须用“[]”运算符啦:    for(m in test){        alert(test[m]);        alert(test.m);   //这里会弹出

JavaScript对象属性访问的两种方式

JavaScript对象属性访问的两种方式 object.attribute object["attribute"] 例如: var employees = [ { "firstName":"Bill" , "lastName":"Gates" }, { "firstName":"George" , "lastName":"Bush&qu

如何在JavaScript中访问暂未存在的嵌套对象

JavaScript 是个很神奇的东西.但是 JavaScript中的一些东西确实很奇怪,让人摸不着头脑.其中之一就是当你试图访问嵌套对象时,会遇到这个错误:Cannot read property 'foo' of undefined 在大多数情况下,处理嵌套的对象,通常我们需要安全地访问最内层嵌套的值. 来个粟子: const user = { id: 101, email: '[email protected]', personalInfo: { name: 'Jack', address

JavaScript对象--------------你又知道那些

今天我和大家带来的是JavaScript对象的一些属性和函数(方法),通过这些了解,我们又能做出那些页面效果呢,下面就来进行今天的主题. 1.完整的JavaScript是由ECMAScript.BOM(浏览器对象模型)和DOM(文档对象模型)构成的.示意图如下: 而window对象是整个BOM的核心,Window对象是客户端javascript最高层对象之一,只要打开浏览器窗口,不管该窗口中是否有打开的网页,当遇到BODY,FRAMESET或FRAME元素时,都会自动建立window对象的实例.

JavaScript对象浅谈

JavaScript对象 对象 ECMA-262 把对象(object)定义为"属性的无序集合,每个属性存放一个原始值.对象或函数".严格来说,这意味着对象是无特定顺序的值的数组. 对象是属性和方法的无序集合 对象就是无序属性的集合 尽管 ECMAScript 如此定义对象,但它更通用的定义是基于代码的名词(人.地点或事物)的表示. 在JavaScript中,除了数字.字符串.布尔值.null.undefined这五种原始类型,之外的都是对象,也就是印证了"万物皆对象&quo

探究javascript对象和数组的异同,及函数变量缓存技巧

javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来存储数据有什么不同.于是,我打算探究探究. 一.掌握三种数据类型 首先,一个前提必须掌握的,就是必须理解javascript的数据类型分类,主要分为以下三种: 第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词. 第二

深入JavaScript对象创建的细节

最近深入学习javascript后,有个体会:面向对象的方式编程才是高效灵活的编程,也是现在唯一可以让代码更加健壮的编程方式.如果我们抛开那些玄乎的抽象出类等等思想,我自己对面向对象的从写程序的角度理解就是:复用和封装.复用具体就是让你尽量少写重复代码,封装就是将一些耦合度很高的逻辑放到一个程序块里,而且尽量让里面内容不受外界影响.最后的结论是:优秀的javascript代码都是面向对象的.定州市科技工业局 如何构建javascript对象?ECMA-262对对象的定义是:无序属性的集合,其属性

javascript 对象(四)

一.对象概述 对象中包含一系列的属性,这些属性是无序的.每个属性都有一个字符串key和对应的value. var obj={x:1,y:2}; obj.x; obj.y; 1.为什么属性的key必须是字符串 重点: 可见,字符串的1和数字1访问的都是同一个属性 不管把空对象作为一个key,还是用带有x属性的对象作为key,实际上javascript都会把它转化为字符串,会toString()一下再去处理.所以最终依然指向同样一个属性. 2.对象结构 1.对象属性的结构 对象的属性可以动态添加和删