0%
这是一片思考的空间 -- arthinking
Spring 重构&代码整洁之道 软件设计 JVM 并发编程 数据结构与算法 分布式 存储 网络 微服务 设计模式
Java技术栈 - 涉及Java技术体系

Javascript笔记 - Javascript中的JSON和对象

JSON是Javascript中对象的字面值,是对象的表示方法。Javascript对象其实就是一个属性的集合。

1、对象的属性:

对象的属性是有键值对组成的,其中key为一个字符串,value可以为任何的Javascript对象。

//使用[]设置和获取对象的属性
var obj = new Object();
obj["www.itzhai.com"] = "http://www.itzhai.com";
alert(obj["www.itzhai.com"]);

2、变量既是属性:

Javascript引擎在初始化时会构建一个全局对象,所有的变量都是这个全局对象的属性。为了引用这个全局对象,可以再顶级作用域中这样获取:

var global = this;

在Javascript中,任何独立的函数或者变量都属于这个对象的属性,即:

function test(){}

相当于:

window.test = function(){}

3、使用对象:

声明对象的三种方式:

① 通过new操作符创建一个Object对象,然后动态地添加属性,从无到有构造一个对象

② 定义对象的类圆形,然后使用new操作符来批量构造新的对象

//创建一个对象
function User(username, password){
this.username = username;
this.password = password;
this.getUsername = function(){
return this.username;
}
this.getPassword = function(){
return this.password;
}
}
var arthinking = new User("Jason", "123");
alert(arthinking.getUsername());
alert(arthinking.getPassword());

③ 使用JSON构造对象

JSON即Javascript对象表示方法(Javascript Object Notation),也就是通过字面量来表示一个对象:

//JSON形式创建一个对象
var arthinking = {
username : "Jason",
password : "123",
favorite : {
sports : "football",
music : "Guitar"
}
}
alert(arthinking.username);
alert(arthinking.favorite.sports);

使用JSON的优点:

这种写法比较简洁,大多数有经验的Javascript程序员都更倾向于这种写法,jQuery、ExtJS都大量使用了JSON。

JSON格式数据本身是可以递归的,可以表达任意复杂的数据类型。

JSON的写法很简单:用花括号括起来的键值对,键值对通过冒号隔开,值可以是任意的Javascript对象。

作为一种前端和服务器端数据交换的格式,前端通过AJAX发送JSOn对象到服务器,服务器端通过脚本对JSON进行解析,还原成服务器端的对象,进行处理,然后在通过JSON数据形式返回给客户端信息。这样使用同一种数据格式,可以降低出错率。

使用JSON数据作为函数的返回值:

JSON的另一个应用场景是当一个函数拥有多个返回值时,可以不用按照传统面向对象编程那样返回对象,而是直接返回JSON格式的数据即可。

//使用JSON作为函数的返回值
function position(left, top){
this.left = left;
this.top = top;
return {
left : this.left,
top : this.top
};
}
alert(position(10, 10));

可以这样逐个循环获取JSON中的数据:

var json = position(10, 10);
for(var key in json){
alert(key +" : " + json[key]);
}

欢迎关注我的其它发布渠道

订阅IT宅
内功修炼
Java技术栈
Java架构杂谈是IT宅精品文章公众号,欢迎订阅:
📄 网络基础知识:两万字长文50+张趣图带你领悟网络编程的内功心法 📄 HTTP发展史:三万长文50+趣图带你领悟web编程的内功心法 📄 HTTP/1.1:可扩展,可靠性,请求应答,无状态,明文传输 📄 HTTP/1.1报文详解:Method,URI,URL,消息头,消息体,状态行 📄 HTTP常用请求头大揭秘 📄 HTTPS:网络安全攻坚战 📄 HTTP/2:网络安全传输的快车道 📄 HTTP/3:让传输效率再一次起飞 📄 高性能网络编程:图解Socket核心内幕以及五大IO模型 📄 高性能网络编程:三分钟短文快速了解信号驱动式IO 📄 高性能网络编程:彻底弄懂IO复用 - IO处理杀手锏,带您深入了解select,poll,epoll 📄 高性能网络编程:异步IO:新时代的IO处理利器 📄 高性能网络编程:网络编程范式 - 高性能服务器就这么回事 📄 高性能网络编程:性能追击 - 万字长文30+图揭秘8大主流服务器程序线程模型
📄 Java内存模型:如果有人给你撕逼Java内存模型,就把这些问题甩给他 📄 一文带你彻底理解同步和锁的本质(干货) 📄 AQS与并发包中锁的通用实现 📄 ReentrantLock介绍与使用 📄 ReentrantReadWriteLock介绍与使用 📄 ReentrantLock的Condition原理解析 📄 如何优雅的中断线程 📄 如何优雅的挂起线程 📄 图解几个好玩的并发辅助工具类 📄 图解BlockingQueue阻塞队列
📄 消息队列那么多,为什么建议深入了解下RabbitMQ? 📄 高并发异步解耦利器:RocketMQ究竟强在哪里? 📄 Kafka必知必会18问:30+图带您看透Kafka
📄 洞悉MySQL底层架构:游走在缓冲与磁盘之间 📄 SQL运行内幕:从执行原理看调优的本质 📄 洞悉Redis技术内幕:缓存,数据结构,并发,集群与算法