您的位置:首页 > Web前端 > JavaScript

javascript(重要内置对象,json处理,闭包详解)高级特性详解

2012-08-23 13:37 666 查看




<html><head>

<script type="text/javascript">

//1数组排序 使用Array对象的sort()方法,允许使用一个排序函数作为参数,如果不传地,按asscll 字符顺序排列.

//var a=new Array(10,23,53,33,80);



/*function sortFunction(one ,two){

return one - two;

}

a.sort();//无参数按asll字符排序



for(i in a){

document.writeln(a[i]);

}

document.writeln("<br>");

a.sort(sortFunction);//传地参数,按指定顺序排列

for(i in a){

document.writeln(a[i]);



}*/



/*alert(f(4));//16

var f=0;

function f(x){

return x*x;

}

alert(f);//0

*/

/*alert(f(4));//16

var f;

function f(x){

return x*x;

}

alert(f);*/ //function f(x){return x*x; }

/*

常用内置对象

0 Global对象是顶级对象,在浏览器中,window对象就是Global对象;

1 Object对象:

Object对象是所有对象的基础,任何其他对象都是从Object对象原型扩展而来

如果Object对象使用原型扩展了属性,则所有对象都具有此属性;

2 Function对象:

对象的构造函数可以创建函数对象;

当使用function关键字定义了一个函数时,在系统内部实际上时创建了一个Function对象,

因为函数也是对象 。

函数的调用:

函数名();

apply(this,函数参数数组);

call(this, 函数参数列表);

3 Error对象:

可以在发生错误时作为参数传递给catch子句,

也可以使用new关键字构造自定义的Error对象。

4 实体类:

实体类是自定义类型,需要定义后才可以使用它创建对象。

在JavaScript中没有class,但可以通过用function关键字和this关键字类定义类模板



5 类的继承:通过原型扩展的方式实现继承





6 闭包的使用

当一个内部函数在包含它们的外部函数之外被调用时,就会形成闭包。

闭包可以读取函数内部的变量,让这些变量的值始终保持在内存中;

利用闭包绑定参数为函数引用设置延时;

7 JavaScript处理JSON数据

stringify()方法将JSON对象转换为JSON字符串;

parse()方法将JSON格式的字符串转换为JSON数据;

eval()方法将普通字符串转换为JSON数据对象;

*/

//1

/*Object.prototype.money=3000;

document.writeln("添加了原型属性money,值为:"+Object.money);

Object.money=5000;

document.writeln("<br>生成了对象属性money,值为:"+Object.money);

var s=new String();

//String也因为Object原型扩展而拥有money属性

document.writeln("<br>String对象继承了money属性,值为:"+Object.money);*/

//2

/*var s=new String();

s.money=1000;//money是string对象的属性

var money=2000;//money是window对象的属性

var func1=new Function("a", "b", "document.writeln(a+b);document.writeln(this.money+\"<br>\");");

var func2=function(a,b){

document.writeln(a + b);

document.writeln(this.money+"<br>");

}

//因为没有传递对象引用,所以func1()函数中的this指向window

func1(10, 20);

//传递了对象s,所以func1中的this指向s

func2.apply(s,[10,20]);

//传递的空引用,所以func2中的this指向了window

func2.call(null, 10, 20);

*/



//3

/*try{

var myerror=new Error("自定义错误");//自定义错误对象

throw myerror;//抛出自定义的错误对象

}catch(e){

alert(e.message);//);//message属性是Error对象最主要的属性

}*/





//4

/*function Teacher(n,s,a){

//绑定属性

this.name=n;

this.age=a;

this.sex=s;

//判断行为是否已经定义过

if(Teacher.prototype.getDetails==undefined){

//绑定行为



Teacher.prototype.getDetails=function(){//直接将行为的绑定放在类定义的括号内

document.writeln('教员的姓名:' + this.name + '<br>教员的性别:' + this.sex + '<br>教员的年龄:' + this.age);

}

}

}

//创建对象

var tea=new Teacher('Mary',' 女',25);

//调用方法

tea.getDetails();*/





//5

/*function Person(){

this.name="jack";

Person.prototype.speak=function(){

document.writeln("Person类的原型扩展的方法speak被继承");

}

Person.prototype.eat=function(){

document.writeln("<br>Person类的原型扩展的方法eat被继承");

}

}

function Student(){

Student.prototype.study=function(){

document.writeln("<br>Student类自己的方法");

}

}

//实现继承

Student.prototype=new Person();

//测试继承

var stu=new Student();

stu.speak();

stu.eat();

//自己方法

stu.study();

*/







//闭包 实例

/* function funcTest(){

var tmpNum=100;//私有变量

//在函数funcTest内定义另外的函数作为funcTest的方法函数

function innerFuncTest(){

alert(tmpNum); //引用外层函数funcTest的临时变量tmpNum

}

return innerFuncTest; //返回内部函数

}

//调用函数

var myFuncTest=funcTest();

myFuncTest();//弹出100

//下面的调用将失败

innerFuncTest();*/



//设置延时

/*function closureExample(msg) {

return function() {

alert(msg);

};

}

//使用闭包解决

window.onload = function() {

var element = document.getElementById('closuretest');

if (element) {

var good = closureExample('这个参数是由闭包绑定的');

element.onclick = function() {

setTimeout(good, 3000); //延迟3秒弹出提示

}

}

} */





//7

//声明普通字符串

var norStr='{persons:[{name:"jim",sex:"m",age:"40"},{name:"green",sex:"g",age:"80"}]}';

//声明JSON格式的字符串

var jsontext='{"persons":[{"name":"tom","sex":"m","age":90},{"name":"tom2","sex":"g","age":910}]}';

var mvision=eval(norStr);//eval()将普通字符串转为json数据对象

with(document){

writeln("转化后的JSON对象:"+mvision);

}

document.writeln("<br>转化后的JSON对象的一个属性值mvision.name[0]-->:"+mvision[0].name);



var text=JSON.stringify(mvision);//stringify()将json对象转为json字符串

document.writeln('<br>转换后的json文本:' + text);

var myData=JSON.parse(text);//将json文本转为json数据

document.writeln('<br>转换后的JSON对象:' + myData);

document.writeln('<br>mvision[1].name=' + mvision[1].name);

</script>

</head>

<body>

<div id='closuretest'></div>

</body>

</html>

运行结果为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: