JavaScript面向对象编程指南 读书笔记4-01

从数组到对象

前面我们已经学习了数组的用法,对象的情况与数组相似,唯一的不同是对象的键值类型是自定义的。如下例子:
var hero = {  bread:'Turtle',
    occupation:'Ninja'
};  
  • hero用于表示该对象的变量名

  • 与定义数组时使用中括号[]不同,对象使用的是{}

  • 括号中用逗号分割的是组成对象的元素(通常称之为属性)

  • 键值对之间用冒号分割,如:key:value

术语名词:用[]定义数组方法称之为数组文本标识法,用{}定义对象的方法称之为对象文本标识法

元素、属性、方法与成员

说到数组的时候,我们通常说其中包含的是元素,而对于对象,我们通常会说其中包含的是属性。

对象的属性可以是函数,因为函数本身就是一种数据,这种情况下,我们称该属性为方法。

哈希表、关联型数组

在一般的程序设计语言中,通常都会存在两种不同的数组形式

  • 一般性数组,也交索引型数组或者枚举型数组(通常以数字为键名)

  • 关联型数组,也叫哈希表或者字典(通常以字符串为键值)

在JavaScript中,我们会用数组来表示索引型数组,对象来表示关联型数组。

访问对象属性

通常可以通过以下两种方式来访问对象的属性

  • 中括表示法,如:hero['occupation']

  • 点号表示法,如:hero.occupation

如果所访问的属性不符合变量命名规则,不能通过点号来访问;

如果要访问的属性名是不确定的,必须使用中括号表示法;

调用对象方法

由于对象方法实际上是一个函数类型的属性,因此访问方式完全与属性相同,用点号跟中括号表示法都可以。

修改属性与方法

由于JavaScript是一种动态语言,所以它允许我们随时对现存对象的属性和方法进行修改。

//创建一个空对象
var hero = {};
//为对象添加属性和方法
hero.breed = 'turtle';
hero.name = 'Leonardo';
hero.sayName = function() {
    return hero.name;
}
//调用该方法
hero.sayName();
//删除属性
delete hero.name;
//再调用该方法
hero.sayName();

使用this值

当我们处于某个对象的方法内部时,可以使用this来访问同一对象的属性。当我们引用this值时,实际上引用的就是“这个对象”或者“当前对象”,如:

var hero = {
    name: 'Rafaelo',
    sayName:function(){
        return this.name;
    }
}

构造器函数

我们还可以通过构造器函数的方式来创建对象。如:

function Hero(){
    this.occupation = 'Ninja';
}
var hero = new Hero();
hero.occupation;
使用构造器函数的好处之一就是可以在创建对象的时候接受一些参数。如:
function Hero(name){
    this.name = name;
    this.occupation = 'Ninja';
    this.whoAreYou = function(){
        return "I'm "+
            this.name +
            " and I'm a "+
            this.occupation;
    }
}
var h1 = new Hero('Michelangelo');
var h2 = new Hero('Donatello');
h1.whoAreYou();
h2.whoAreYou();

#笔记##读书笔记##Java#
全部评论

相关推荐

Cl_Wg:看牛客匿名贴容易抑郁,白菜就是我的天花板
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务