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

 

<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>

运行结果为: 

   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值