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 的区别

1.2 对象和 JSON 的区别 JSON 就是 JavaScript object notation ,JS对象表示法,是JS对象的严格子集。 区别就是引号:JSON要求所有的属性名(键)必须加 双...
  • jiaojiao772992
  • jiaojiao772992
  • 2017年09月06日 21:34
  • 192

js对象和 json的区别

js对象形式 var person = {     firstName:"John",     lastName:"Doe",     age:50,     eyeColor:"blue" }; 调...
  • qq_16605855
  • qq_16605855
  • 2017年06月20日 15:22
  • 559

注意区分:JSON字符串和Javascript对象字面量

JSON是基于Javascript语法的一个子集而创建的,特别是对象和数组字面量语法。正是由于JSON的这种特殊来历,导致很多Javascript程序员往往会混淆Javascript对象字面量和JSO...
  • smstong
  • smstong
  • 2016年05月03日 14:36
  • 8639

json对象和js对象的区别

json对象和js对象的区别0 总是感觉json对象和js对象的字面量表示法相同,最近学习json,真心搞不懂,js对象和json对象有什么区别?!就是感觉json对象的key要用" "括起来,...
  • ccecwg
  • ccecwg
  • 2014年07月29日 10:29
  • 1200

如何将json文本转换为JavaScript对象

在实际项目开发过程中,json经常应用到的场景是:在后台应用程序中将响应数据封装成json格式,传到前台页面之后,需要将json格式转换为javascript对象,然后在网页中使用该数据 那么,如何...
  • ITlyng
  • ITlyng
  • 2017年02月19日 14:07
  • 1104

javascript_解析json对象

javascript解析json多个对象和单个对象 若为json多个对象,如下例所示: var people= { "programmers": [{ "firstName": "Brett","la...
  • fightingcoder419
  • fightingcoder419
  • 2016年08月28日 14:41
  • 916

JavaScript开发: 打印json对象的内容

在调试的时候,经常需要知道json对象的内容,通过JSON.stringify函数,可以转换json对象为字符串。 $(document).ready(function() { $.ajax(...
  • jonahzheng
  • jonahzheng
  • 2013年03月29日 14:16
  • 1653

认识json(JavaScript 对象表示法)

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 数据在键值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 var people = ...
  • xiaoxiangyu5
  • xiaoxiangyu5
  • 2015年11月12日 17:12
  • 833

JSON不是JavaScript对象

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

json格式和JavaScript的关系

其实json和javascript没有什么关系,是两个独立的东西。 只是,JSON是JavaScript的一个严格子集,利用了JavaScript中一些模式来表示结构化的数据。可以直接将JS...
  • Ideality_hunter
  • Ideality_hunter
  • 2017年05月02日 17:31
  • 235
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript对象与JSON
举报原因:
原因补充:

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