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>
谨记四个字“修身养性”
大江东去浪淘尽英雄,再牛B的人物最后也是一掊土
向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由
支持大额赞助: