javascript中一切皆对象,而且定义非常灵活,

于是出现了一些相对其他编程语言环境下匪夷所思的代码:

-----------------------------------------------------------------------------------------------------------------------------

字符串对象

var str="abcde";

str.length;

函数对象

(function(){}).toString();//将输出函数代码文本

function callAnotherFunc(fnFunction, vArgument) { fnFunction(vArgument);}

var doAdd = new Function("iNum", "alert(iNum + 10)");//定义一个数对象,注意函数体放在最后,每个构造参数都是一个字符串

callAnotherFunc(doAdd, 10); //输出 "20"

数组对象

alert(['name'].length);//输出1,['name']是一个数组对象,且只有一个元素(字符串'name')

-------------------------------------------------------------------------------------------------------------------------------

对象定义:

var a=[[1,2,3][0,1]["a",2]["sds","sds"]];//二维数组;
var obj={};

or

var obj=new Object();

or

var obj={fname:"Bill",lname:"Gates",age:56};

var person=obj;

or

var obj=function(fname,lname,age){this.fname=fname;this.lname=lname;this.age=age;}

var person=new obj("bill","gates",56);

属性是可以任意添加的

obj[0]="abc";//每个对象都支持下标运算符,如果该下标没有对应的对象,按么返回undefined

obj['name']="an object";

obj.name="an object";

obj.fn=function(){};

例外情况是 var i=0;i.x=3;//这样是不可以的,因为i是值类型,不可以添加属性,只有object可以任意添加属性

另外,平时在javascript中对象实例相关的操作都是通过引用进行的,这样一来javascript没有指针倒也无所谓了

function func(obj){obj.name="abc";}

var obj={name:"java"};

func(obj);

alert(obj.name);//输出abc

关于json:

格式比较简单了,就是name:value成对出现和xml一样都具有自我描述的特性(自我描述:不只承载数据本身,还包含这些数据对应的字符串名称)

value可以是各种对象(数组,对象,字符串,false/true,null)

{

"employees":

[{ "firstName":"John" , "lastName":"Doe" },{ "firstName":"Anna" , "lastName":"Smith" },{ "firstName":"Peter" , "lastName":"Jones" }]

}

//JSON解析

var txt = '{"employees":[' +

'{"firstName":"Bill","lastName":"Gates" },' +

'{"firstName":"George","lastName":"Bush" },' +

'{"firstName":"Thomas","lastName":"Carter" }]}';

obj = JSON.parse(txt);

或者 obj=eval("(" + txt + ")");

为了让最外层的{}不要被eval理解成为Javascript的代码块的开始.而是理解成为一个对象字面量
你写成这样也是一样

1
2
3
var jsonStr = '{"a":1}';
eval('var jsonObj = '+jsonStr);
alert(jsonObj.a);

eval或许可以看作是一个宏,类似于c++中的宏

json的使用:

  • 读取 JSON 字符串
  • 用 eval() 处理 JSON 字符串
<script>
//json文本
var employee='{"firstname":'+'"john",'+'"lastname":'+'"bill"}'
alert(eval("("+employee+")").firstname);
//直接使用json对象
var obj={"staffs":[{"ab":"cd"}]}
alert(obj.staffs[0].ab);
</script>

javascript面向对象规则汇总以及json的更多相关文章

  1. JavaScript高级:JavaScript面向对象,JavaScript内置对象,JavaScript BOM,JavaScript封装

    知识点梳理 课堂讲义 1.JavaScript面向对象 1.1.面向对象介绍 在 Java 中我们学习过面向对象,核心思想是万物皆对象. 在 JavaScript 中同样也有面向对象.思想类似. 1. ...

  2. Javascript面向对象(封装、继承)

    Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程( ...

  3. 【转】javascript面向对象编程

    摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...

  4. JavaScript 面向对象(三) —— 高级篇

    JavaScript 面向对象(一) —— 基础篇 JavaScript 面向对象(二) —— 案例篇 一.json方式的面向对象 首先要知道,js中出现的东西都能够放到json中.关于json数据格 ...

  5. JavaScript要点 (四)JSON

    JSON 是用于存储和传输数据的格式. JSON 通常用于服务端向网页传递数据 . 什么是 JSON? JSON 英文全称 JavaScript Object Notation JSON 是一种轻量级 ...

  6. javascript进击(八)JSON

    JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Ob ...

  7. 深入解读JavaScript面向对象编程实践

    面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化.多态.和封装几种技术.对JavaScript而言,其核心是支持面向对象的,同时它也提供了强大灵活的基于原型的面向对象编程能力 ...

  8. 转:javascript面向对象编程

    作者: 阮一峰 日期: 2010年5月17日 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学 ...

  9. Javascript面向对象研究心得

    这段时间正好公司项目须要,须要改动fullcalendar日历插件,有机会深入插件源代码.正好利用这个机会,我也大致学习了下面JS的面向对象编程,感觉收获还是比較多的. 所以写了以下这篇文章希望跟大家 ...

随机推荐

  1. Mapper类/Reducer类中的setup方法和cleanup方法以及run方法的介绍

    在hadoop的源码中,基类Mapper类和Reducer类中都是只包含四个方法:setup方法,cleanup方法,run方法,map方法.如下所示: 其方法的调用方式是在run方法中,如下所示: ...

  2. Ajax方法实现登录页面

    Note: ajax技术 不用刷新页面,做局部刷新不用form表单,因为不需要提交,通过JQuery控制必须要有id如果要用ajax可以用JQuery也可以用js写,推荐JQuery 因为简单,直接引 ...

  3. 计算系数(noip2011)

    [问题描述]给定一个多项式(ax + by)^k,请求出多项式展开后(x^n)*(y^m)项的系数.[输入]输入文件名为 factor.in.共一行,包含 5 个整数,分别为a,b,k,n,m,每两个 ...

  4. iOS 中 #import同@class之间的区别

    很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在m文件中,而h文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢? 这是 ...

  5. 团队开发——冲刺1.a

    冲刺阶段一(第一天) 1.今天准备做什么? 在了解C#的基础上,深入熟悉Windows窗体应用程序,熟练掌握基本功能. 2.明天做什么:简单设计界面.

  6. osmocom-bb中用osmocon刷入固件命令那些参数你都弄懂了吗?

    转载留做备份,原文地址:http://92ez.com/?action=show&id=23341 首先找到osmocon.c这个源文件,具体目录在这里 osmocom-bb/src/host ...

  7. 用PHP语言刷OJ题

    平常在学校都是用C,C++,Java来刷OJ题,把AC的题用不同的语言再AC一次,基本相当于翻译而已.看到学校的OJ支持提交PHP代码,于是尝试了一下. 首先,得会使用PHP,但是你如果在看这篇博客, ...

  8. HDOJ三部曲-DP-1017-pearls

    Pearls Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) Total Submis ...

  9. JavaScript数据结构——树

    树:非顺序数据结构,对于存储需要快速查找的数据非常有用. 二叉树:二叉树中的节点最多只能有两个子节点(左侧子节点和右侧子节点).这些定义有助于我们写出更高效的向/从树中插入.查找和删除节点的算法. 二 ...

  10. PostgreSQL高可用性、负载均衡、复制与集群方案介绍

    目录[-] 一.高可用性.负载均衡.复制的几个方案比较: 二.多节点集群方案比较 9.3官方文档(中文):http://58.58.27.50:8079/doc/html/9.3.1_zh/high- ...