JS对象

JS对象的概念

JS对象是一系列命名变量、函数的集合。对象中的命名变量称为属性,函数称为方法。如同java一样,对象对属性和方法的访问,通过点号"."。

JS作为基于对象的脚本语言,提供了大量的内置对象供使用。还提供了如下常用的类:

Array:数组类

Date:日期类

Error:错误类

Function:函数类

Math:数学类

Number:数值类

Object:对象类

String:字符串类

JS虽然不要求使用对象,甚至可以不使用函数,只用顺序的代码流就可以实现功能。但是为了更好的复用和可读性,还是使用对象和函数为好。

JS中,每个函数都对应着一个对象。该对象既是Function类的实例,也是Object类的实例。JS不允许指定类之间的继承关系,开发者定义的类之间也没有父子关系。但是,所有的类都可以认为是Object的子类。

对象和关联数组

JS的对象,本质上是关联数组,就像是Java中的Map。对象中的数据是一对对的key-value。当value是函数时,就是对象的方法。否则就是属性。或者,可以认为JS对象中,都是属性。

由于本质上是数组,所以访问JS属性时,除了使用"对象.属性名",也可以使用 对象[属性名] 的方式。甚至在一些时候,必须使用中括号方式。比如:

<script type="text/javascript">
    function Person(name,age)
    {
        this.name = name;
        this.age = age;
        this.info = function()
        {
            alert("info method");
        }
    }
    var p = new Person('wargon',24);
    for( propName in p){
        document.writeln('p对象的'+propName+'属性值为:'+p[propName]+'<br/>');
    }
</script>

上面的JS代码中,访问p对象的属性只能使用p[propName]这种方式。如果使用p.propName,相当于访问p对象的propName属性,此时propName不再认为是一个变量了。但是p并没有名为propName的属性,所以会报错。

prototype:

prototype属性是JS中所有类的具有的类属性。通过其可以为java中的类(也就是函数)动态增加属性(包括方法)。

比如:

Person.prototype.walk()=function(){...}    //为Person类增加了一个walk()方法

实际上prototype代表着类的原型对象。默认情况下,JS中类的prototype的属性值是一个Object类的对象。可以借助prototype来实现继承。

function Student(grade){
    this.grade = grade;
}

Student.prototype=new Person('wang',25);

这时,Student就拥有了Person类中的属性和方法。这时,Student类的实例,也是Person类的实例。

需要注意的是,当使用了prototype进行类的拓展时,原本单纯的类就不存在了,新的类覆盖了它。功能增强了。

实现伪继承还可以通过构造器的方式以及call()和applay()方法。这里不再赘述了。

JS对象的创建。

作为一个关联数组,JS对象的创建可以脱离原本的类进行。

三种创建方式:

使用new关键字:创建函数的时候,同时创建了类,也是唯一的构造方法。使用new关键字进行类实例的创建。其实这里说不说唯一构造器没什么必要。作为弱类型语言,其参数完全可以不匹配,甚至不传参。当然,可能会导致错误。

使用Object类:

var p = new Object();    //创建了一个空对象。
p.name = 'wang';

从上面可以看出,JS支持对象动态的增加其属性和方法。当一个类的某个对象需要增加对象时,不必使用prototype属性为整个类增加对象,使用属性自己增加即可。

使用JSON:从JS1.2之后,开始使用json。现在json已经发展为了一个收到广泛支持的、跨语言的、轻量级的数据交换格式。

var p = {
    name:'wang',
    age:24,
    lover:['play','study'],
    info:function(){
        alert('我叫'+name);
    }
}

现在暂时认为,json中的属性和方法,都是实例属性和方法。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值