<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>
运行结果为: