day06
javascript函数
1.this 关键字总是指向调用者,谁调用函数,this就指向谁
function test(){
alert(this.x);
};
test.x= 10;
alert(test.x);
2.call、 apply 主要应用于框架底层,用于绑定函数的执行环境、作用域
--var color='red';
var obj={color:'yellow'};//key--value
function showColor(){
alert(x+y+z);
alert(this.color);//访问的是red
};
//call.apply 绑定一个函数,到你指定的作用域执行
showColor.call(window,10,20,30);//输出60,red
showColor.call(obj,10,20,30);
//apply传递的是数组,用[]
showColor.apply(obj,[10,20,30]);
3.块的概念:
---和高级程序语言不同,js没有块的概念,我们一般用小括号包裹块级作用域
function test(){
(function(){
for(var i=1;i<=5;i++){
alert(i);
}
})();
alert(i);//报错,没有定义--不用小括号包裹则i输出6
};
4.闭包:
---执行环境
---作用域链
---垃圾回收制
----闭包实例
function text(){
return function(){
alert('我是闭包...');
};
};
var f=test();
//alert(typeof f);//返回function类型
f();//执行调用
实例二
test03.jsb
<input type=button id=btn value="点击" onclick="test();"/>
test03.js
var i=0;
function test(){
alert(++i);
};
闭包实现实例二,不定义全局变量
var inp=(
function(){
var i=0;
return{
getCount:function(){
alert(++i);
}
};
})();
jsp调用--onclick="inp.getCount();"
day07
javascript对象
1.---json对象(javaScript Object Notation)
Ext.onReady(function(){
//var obj=new Object();
var obj={name:'zhangsan',age:20};//简写
obj.sex='男';//增加属性
obj.age=25;//修改属性
delete obj.name;//删除属性
//枚举对象内置属性的循环
for(var attr in obj){
alert(attr+":"+obj[attr]);
}
});
2.定义一个js类
var Person=function(name,age){
this.name=name;
this.age=age;
//private私有
var _sex='男';//js的私有属性
this.getSex=function(){
return _sex;
};
this.setSex=function(){
return _sex;
};
};
//实例化一个对象
var p=new Person('张三',30);
alert(p.name);
3.扩展属性
Person.prototype.id=10;
Person.prototype.method=function(){
alert(this.age);
};
----
//原型对象的构造器总是指向当前对象的模板,原型(prototype)
Person.prototype={
constructor:Person,
id:10,
method:function(){
alert('method....');
}
};
var p=new Person('张三',30);
alert(p.name);
alert(p.id);
p.method();
4.单体
单体模式
var SXT={};
SXT.Array={
each:function(){
alert('each...');
},
filter:function(){
alert('filter...');
}
};
SXT.staticMethod=function(){
alert('我是单体下的静态方法!');
};
SXT.Array.each();
SXT.staticMethod();
5.闭包单体
var SXT=(function(){
var Array={
each:function(){
alert('each...');
}
};
return{
arrayEach:function(){
Array.each();
}
};
})();
SXT.arrayEach();