论坛首页 Web前端技术论坛

Javascript 对象 (二)

浏览 1699 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-29   最后修改:2008-12-29

访问对象的属性

有两种方式访问对象的属性。

  • 用数组的形式如:animal['name']
  • 用点的方式访问:animal.name

第一种访问方法适合任意情况。但是如果属性是无效的命名的话,如上一节所说的属性命名'1name'或者'my name'这种情况用点的方式访问就是错误的。这一点要注意。

 

下面具体看一个对象访问的例子

var book = {
    name:'Javascript Fundation',
    published:jixie.
    author:{
        firstname:'nicholas',
        lastname:'xia'
    }
};

 

1.获取author对象的firstname属性

book.author.firstname //nicholas

 

2.获取author对象的lastname属性,我们尝试用另一个写法

book['author']['lastname'] //xia

我们也可以用混合的访问方式

book.author['lastname']或者book['author'].lastname 这些方式都是有效的,要灵活去运用

 

在属性是动态的情况下,一般用数组的访问对象的方法。

var key ='lastname'
book.author[key];//xia

调用对象的方法

var hero = {
breed: 'Turtle',
occupation: 'Ninja',
say: function() {
return 'I am ' + hero.occupation;
}
}
hero.say();
 

访问对象的方法很简单,有点就行,不过也可以用数组的方式,看起来比较诡异

如 hero['say']();

不推荐这种写法,访问对象的时候尽量用点的方式。

 

修改属性和方法

因为Javascript是动态语言,所以在任何时候都可以修改对象的属性和方法。看如下的例子

var hero={};

 hero是个空的对象。

typeof hero.breed;//undefined

 说明了hero对象没有breed的属性

 接下来可以添加属性和方法了

hero.breed = 'turtle';
hero.name = 'Leonardo';
hero.sayName = function() {return hero.name;};

 调用方法

 hero.sayName();//Leonardo

 删除属性

 

delete hero.name;//true
hero.sayName();//方法失败
 
   发表时间:2008-12-29   最后修改:2008-12-29
动态增加的方法,如何删除呢?只能设置成一个空函数么?
0 请登录后投票
   发表时间:2009-01-10  
hanjs 写道

动态增加的方法,如何删除呢?只能设置成一个空函数么?


和删除属性一样
var a ={};
a.b=function(){
    alert("cc");
}
a.b();
delete a.b;
a.b();
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics