javascript面向对象规则汇总以及json
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的更多相关文章
- JavaScript高级:JavaScript面向对象,JavaScript内置对象,JavaScript BOM,JavaScript封装
知识点梳理 课堂讲义 1.JavaScript面向对象 1.1.面向对象介绍 在 Java 中我们学习过面向对象,核心思想是万物皆对象. 在 JavaScript 中同样也有面向对象.思想类似. 1. ...
- Javascript面向对象(封装、继承)
Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程( ...
- 【转】javascript面向对象编程
摘要:本文本来是想自己写的,奈何花了好长时间写好之后忘记保存,还按了刷新键,一键回到解放前,索性不写了,所以本文是转载的. 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化. ...
- JavaScript 面向对象(三) —— 高级篇
JavaScript 面向对象(一) —— 基础篇 JavaScript 面向对象(二) —— 案例篇 一.json方式的面向对象 首先要知道,js中出现的东西都能够放到json中.关于json数据格 ...
- JavaScript要点 (四)JSON
JSON 是用于存储和传输数据的格式. JSON 通常用于服务端向网页传递数据 . 什么是 JSON? JSON 英文全称 JavaScript Object Notation JSON 是一种轻量级 ...
- javascript进击(八)JSON
JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更易解析. 什么是 JSON ? JSON 指的是 JavaScript 对象表示法(JavaScript Ob ...
- 深入解读JavaScript面向对象编程实践
面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式,主要包括模块化.多态.和封装几种技术.对JavaScript而言,其核心是支持面向对象的,同时它也提供了强大灵活的基于原型的面向对象编程能力 ...
- 转:javascript面向对象编程
作者: 阮一峰 日期: 2010年5月17日 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学 ...
- Javascript面向对象研究心得
这段时间正好公司项目须要,须要改动fullcalendar日历插件,有机会深入插件源代码.正好利用这个机会,我也大致学习了下面JS的面向对象编程,感觉收获还是比較多的. 所以写了以下这篇文章希望跟大家 ...
随机推荐
- Swift 实现iOS Animation动画教程
这是一篇翻译文章.原文出处:http://www.raywenderlich.com/95910/uiview-animation-swift-tutorial 动画( animation)是iOS用 ...
- 《day12---异常》
//91-面向对象-异常-异常的发生和简单应用. /* 异常: java运行时期发生的问题就是异常. Java中运行时的除了异常Exception含有错误Error. 异常:通常发生后可以有针对性的处 ...
- setLayoutParams getLayoutParams
继承关系:java.lang.Object ↳ android.view.ViewGroup.LayoutParams ↳ android.view.ViewGroup.MarginLayoutPar ...
- PAT 05-树8 Huffman Codes
以现在的生产力,是做不到一天一篇博客了.这题给我难得不行了,花了两天时间在PAT上还有测试点1没过,先写上吧.记录几个做题中的难点:1.本来比较WPL那块我是想用一个函数实现的,无奈我对传字符串数组无 ...
- 利用NTFS交换数据流隐藏文件
利用NTFS交换数据流隐藏文件 发表于 2012 年 12 月 15 日 由 晴刃 这篇文章介绍一下Windows的NTFS文件系统的ADS(alternate data streams,交换数据流) ...
- Mousejack测试指南
0x00 前言 近日,Bastille的研究团队发现了一种针对蓝牙键盘鼠标的攻击,攻击者可以利用漏洞控制电脑操作,他们将此攻击命名为MouseJack. 攻击者仅需要在亚马逊上以60美元购买设备,改造 ...
- Ubuntu虚机中SVN连接出错,虚机本机可正常CO,CIN,解决方法
Ubuntu虚机中SVN连接出错,虚机本机可正常CO,CIN,外面机器无法正常连接. 解决: 虚机换个IP即可正常连接,原因不明,有可能为公司网管对该IP做了某些限制. PS:VMware中只需将网络 ...
- Unity3D ShaderLab 基础的高光实现
Unity3D ShaderLab 基础的高光实现 关于高光: 在一个物体表面的高光属性就是为了描述它是如何表现光泽.这种类型的效果在着色器的世界中通常称为视点相关效果. 之所以这样说,是因为为了实现 ...
- Magento架构师的笔记-----Magento显示当前目录的父分类和子分类的分类名
在Magento目录的分类页面里,希望在左侧导航获取到父分类和子分类,可以用以下方法:打开app/your_package/your_themes/template/catalog/navigatio ...
- Qt的quit(),exit()以及close()事件捕获
使用QT编辑界面,其中带来很大方便的一点就是Qt中自带丰富的.种类齐全的类及其功能函数,程序员可以在编辑程序的过程中简单地直接调用.关于窗口关闭的操作,在这里指出常用的三个槽,即quit() ...