一、变量作用域和闭包
注意: uncaught refereceError:is not defined 和 undefined 不是一样
js是函数级作用域,在内部的变量,函数内部都能访问,[color=red]函数外部不能访问函数内部的[/color]变量,函数内部能访问外部的变量
注意:在函数里声明变量,都会提到函数的最前面
如何可以在函数外部拿到函数内部的变量,就需要使用闭包(注意使用,闭包会造成内存泄露)
代码例子
function test(){
var k = 1000;
return function(){
return k ;
}
}
var t = test()();//t的值是1000;
二、this的使用([color=red]谁调用this就指向谁[/color])
代码例子
闭包的使用
this.m=1000;
var obj = {
m:100,
test : function(){
alert(this.m);//值是100
return function(){
alert(this.m);//值是1000
}
}
}
执行 (obj.test())();
面向切面的使用
this.a=1000;
function test(){
this.a = 1;
}
test.prototype.geta = function(){ //将方法挂在原型上
return this.a;
}
执行
var p = new test();
console.log(p.geta());//值是1
三、按值传递
1、如果将Stirng、number、boolean作为变量传递给函数,函数内部的修改不会影响外面的变量值。
2、如果将object、或者array传递给函数,函数内部的修改会影响外面的变量值。
四、通过原型链继承 (面向对象)
function People(){
}
People.prototype.say = function(){
alert("hello world")
}
function Student(){
}
var super = Student.prototype.say;
Student.prototype.say = function(){
super.call(this)//子类调用父类的方法
alert("stu-hello");
}
Student.prototype = new People();//通过原型链来继承
var s = new Student();
s.say();
五、面向对象封装
(function(){
var n = "ime" (只能在内部使用变量)
function People(){
}
People.prototype.say = function(){
alert("hello world")
}
window.People = People ;(对外提供一个接口)
})()
六、DOM事件处理
1、DOM0级事件处理,如果多次绑定一个事件,那么事件会被覆盖。
2、DOM2级事件处理,一个事件多次绑定,并不会覆盖,是依次执行。
3、阻止事件冒泡:event.stopPropagation();
4、阻止默认行为:如超链接标签的默认行为是连接到其他界面,event.preventDefault()可以阻止。
七、javaScript脚本操作http的web应用
1、Ajax :使用脚本操纵http和web服务器进行数据交换。不会导致界面重新加载。
2、comet: 与Ajax相反,web服务器发起通信并异步发送消息到客户端。
3、使用<script>元素实现脚本操纵HTTP是非常吸引人的,因为他们可以跨域通信而不受限于同源策略。
4、JSONP:使用基于<script>的Ajax传输协议是,服务器的响应采用JSON编码的数据格式,当执行脚步是,javaScript解析器能自动将其"解码"。由于它使用JSON数据格式,因此这种Ajax传输协议也叫做"JSONP"
八、ajax的JSONP的使用
首先,在客户端指定一个跨域的url地址,注册一个callback, 然后把callback的名字传给服务器,然后生成一个function方法。
然后,当服务器先生成 json 数据后,会将json数据封装在function方法中。返回给客户端。
最后,在客户端就会执行方法的回调函数,从而得到跨域服务器的json。
注意: uncaught refereceError:is not defined 和 undefined 不是一样
js是函数级作用域,在内部的变量,函数内部都能访问,[color=red]函数外部不能访问函数内部的[/color]变量,函数内部能访问外部的变量
注意:在函数里声明变量,都会提到函数的最前面
如何可以在函数外部拿到函数内部的变量,就需要使用闭包(注意使用,闭包会造成内存泄露)
代码例子
function test(){
var k = 1000;
return function(){
return k ;
}
}
var t = test()();//t的值是1000;
二、this的使用([color=red]谁调用this就指向谁[/color])
代码例子
闭包的使用
this.m=1000;
var obj = {
m:100,
test : function(){
alert(this.m);//值是100
return function(){
alert(this.m);//值是1000
}
}
}
执行 (obj.test())();
面向切面的使用
this.a=1000;
function test(){
this.a = 1;
}
test.prototype.geta = function(){ //将方法挂在原型上
return this.a;
}
执行
var p = new test();
console.log(p.geta());//值是1
三、按值传递
1、如果将Stirng、number、boolean作为变量传递给函数,函数内部的修改不会影响外面的变量值。
2、如果将object、或者array传递给函数,函数内部的修改会影响外面的变量值。
四、通过原型链继承 (面向对象)
function People(){
}
People.prototype.say = function(){
alert("hello world")
}
function Student(){
}
var super = Student.prototype.say;
Student.prototype.say = function(){
super.call(this)//子类调用父类的方法
alert("stu-hello");
}
Student.prototype = new People();//通过原型链来继承
var s = new Student();
s.say();
五、面向对象封装
(function(){
var n = "ime" (只能在内部使用变量)
function People(){
}
People.prototype.say = function(){
alert("hello world")
}
window.People = People ;(对外提供一个接口)
})()
六、DOM事件处理
1、DOM0级事件处理,如果多次绑定一个事件,那么事件会被覆盖。
2、DOM2级事件处理,一个事件多次绑定,并不会覆盖,是依次执行。
3、阻止事件冒泡:event.stopPropagation();
4、阻止默认行为:如超链接标签的默认行为是连接到其他界面,event.preventDefault()可以阻止。
七、javaScript脚本操作http的web应用
1、Ajax :使用脚本操纵http和web服务器进行数据交换。不会导致界面重新加载。
2、comet: 与Ajax相反,web服务器发起通信并异步发送消息到客户端。
3、使用<script>元素实现脚本操纵HTTP是非常吸引人的,因为他们可以跨域通信而不受限于同源策略。
4、JSONP:使用基于<script>的Ajax传输协议是,服务器的响应采用JSON编码的数据格式,当执行脚步是,javaScript解析器能自动将其"解码"。由于它使用JSON数据格式,因此这种Ajax传输协议也叫做"JSONP"
八、ajax的JSONP的使用
首先,在客户端指定一个跨域的url地址,注册一个callback, 然后把callback的名字传给服务器,然后生成一个function方法。
然后,当服务器先生成 json 数据后,会将json数据封装在function方法中。返回给客户端。
最后,在客户端就会执行方法的回调函数,从而得到跨域服务器的json。