JavaScript对象与JSON

原创 2012年03月30日 22:33:45

1.Javascript对象


JavaScript对象其实就是属性的集合,也就是说,给定一个JavaScript对象,我们可以明确的知道一个属性是不是这个对象的属性,

对象中的属性是无序的,并且是各不相同的(如果用同名的,则后声明的覆盖先声明的)。

一般来说,我们声明对象的时候对象往往只是一个空的集合,不包含任何的属性,通过不断的添加属性,使得该对象成为一个

有完整功能的对象,而不用通过创见一个类,然后实例化该类这种模式,这样我们的代码具有更高的灵活性,我们可以任意的增删对象的属性。

JavaScript对象的本身就是一个dictionary,或者Java语言中的Map,或者称为关联数组,即通过键来关联一个对象,这个对象本身又可以是一个对象,根据此定义,我们可以知道

JavaScript对象可以表示任意复杂的数据结构。


2.prototype

prototype是JS特有的一个概念,通过使用原型,JS可以建立其传统OO语言中的继承,从而体现对象的层次关系。

JS本身是基于原型的,每个对象都有一个prototype的属性来,这个prototype本身也是一个对象,因此它本身也恶意有自己的原型,

这样就构成了一个链结构。

访问一个属性的时候,解析器需要从下向上的遍历这个链结构,直到遇到该属性,则返回属性对应的值,或者遇到原型为null

的对象(JS的基对象Object的prototype属性即为null),如果此对象仍没有该属性,则返回undefined

下面我们看一个例子:

//声明一个对象base

function Base(name){

   this.name=name;

   this.getName=function(){

   return this.name;

}

}


//声明一个对象child

function Child(id){

   this.id=id;

   this.getId=function(){

   return this.id;

}


//将child的原型指向一个新的base对象

Child.prototype=new Base("base");


//实例化一个child对象

var c1=new Child("child");

//c1本身具有getId方法

print(c1.getId());

//由于c1从原型链上继承到了getName方法,因此可以访问

print(c1.getName());

得出结果:

child

base

由于遍历原型链的时候,是由下而上的,所以最先遇到的属性值最先返回,通过这种机制可以完成重载的机制。


}


3.this指针

在JS中,this表示当前上下文,即调用者的引用


//定义一个人,名字为jack

vat jack={name:"jack".

                  age:26

               }


//定义另一个人,名字为abruzzi

var abruzzi={

                      name:"abruzzi",

                        age:26

               }

//定义一个全局的函数对象

function printName(){

                 return this.name;

}


//设置printName的上下文为jack,此时的this为jack

print(printName.call(jack));

//设置printName的上下文为abruzzi,此时的this为abruzzi

print(printName.call(abruzzi));


4.使用对象

对象是JS的基础,

对象的声明有三种方式:

(1)  通过new 操作符作用域Object对象,构造一个新的对象,然后动态的添加属性,从无到有的构筑一个对象

(2)定义对象的"类":原型,然后使用new 操作符来批量的构筑新的对象

(3)使用JSON.


第二种方式:

//定义一个“类”, Address

function Address(street,xno){

     this.street =street ||'Huang Road';

      this.xno=xno  || 135;

      this.toString =function() {

       return "street:"+this.street+",No:" +this.xno;

      }

 }

//定义另一个"类",Person

 function Person (name,age,addr){

      this.name=name  ||'unknown';

     this.age=age;

       this.addr=addr||new Address(null,null);

    this.getName=function(){return this.name;}

    this.getAge=function(){return this.age;}

    this.getAddr=function(){return this.addr.toString();}

}


//通过new操作符来创建两个对象,注意,这两个对象是相互独立的实体

var jack=new Person('jack',26,new Address('Qing Hai Road',123));

var abruzzi=new Person('abruzzi',26);


//查看结果

print(jack.getName());

print(jack.getAge());

print(jack.getAddr());

print(abruzzi.getName());

print(abruzzi.getAge());

print(abruzzi.getAddr());

运行结果如下:

jack

26

street:Qing Hai Road,No:123

abruzzi

26

street:Huang Quan Road,No:135


4.json及其使用


例如:

var obj={

  name:"abruzzi",

  age:26,

  birthday:new Date(1984,4,5),

  addr:{

   street:"Huang Quan Road",

   xno:"135"

    }

}



相关文章推荐

javascript对象转换成json

  • 2016年07月13日 15:55
  • 1KB
  • 下载

浅谈PHP与javascript之JSON XML 数组 对象三者的区别

一、认识JSON是什么 先来说说什么是JSON。所谓json即javascript Object Notation (javaScript对象符号).它是基于JavaScript(Standar...

JavaScript数组对象JSON学习笔记

  • 2013年07月30日 14:40
  • 9KB
  • 下载

javascript xml字符串转为JSON对象

/* ### jQuery XML to JSON Plugin v1.2 - 2013-02-18 ### * http://www.fyneworks.com/ - diego@fynewor...

javascript字符串转json对象

方法1:eval函数 计算某个字符串,并执行其中的的 JavaScript 代码.只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 ev...

深入理解JavaScript系列(9):根本没有“JSON对象”这回事!

前言 写这篇文章的目的是经常看到开发人员说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话题,所以把之前收藏的一篇老外的文章整理翻译了一下,供大家讨论,如有错误,请大家指出,多...

JSON不是JavaScript对象

很多人都把JSON当作JavaScript对象,但它根本不是。JSON只是一种灵感来自JavaScript对象结构的字符串表示法。JSON被设计得简单松散,用来在服务器和浏览器之间传输数据。因为它得简...
  • voidccc
  • voidccc
  • 2014年08月02日 14:42
  • 914

JSON--JavaScript对象表示法的基础知识介绍

一、JSON是什么? JSON(JavaScript对象表示法), 是在网络通信下,常用的一种数据表达格式,它有助于我们于一个自描述的,独立的和轻的方式呈现并交换数据。这些数据可以易于和转换为Ja...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript对象与JSON
举报原因:
原因补充:

(最多只允许输入30个字)