闭包函数
1.封闭函数是javascript中匿名函数的另外一种写法,创建一个一开始就执行而不用命名的函数
2.(function(){...})();还可以在函数定义前加上"~"或者"!"符号来定义匿名函数
(function(){
var str = '欢迎访问我的主页';
alert(str);
a++;
})();
!function(){
var str = '欢迎访问我的主页';
alert(str);
a++;
}();
~function(){
var str = '欢迎访问我的主页';
alert(str);
a++;
}()
闭包
函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制收回
function aaa(a){
var b = 5;
function bbb(){
a++;
b++;
alert(a);
alert(b);
}
return bbb;
}
var ccc = aaa(2);
ccc();
ccc();
改写成封闭函数的形式
var ccc = (function(a){
var b = 5;
function bbb(){
a++;
b++;
alert(a);
alert(b);
}
return bbb;
})(2);
ccc();
ccc();
获取地址栏参数
<html>
<head>
</head>
<body>
<script type="text/javascript">
alert(GetQueryString("id"));
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;}
</script>
</body>
</html>
函数的继承
非常纯粹的继承关系,实例是子类的实例,也是父类的实例
父类新增原型方法/原型属性,子类都能访问到
/ 定义一个动物类
function Animal (name) {
// 属性
this.name = name || 'Animal';
// 实例方法
this.sleep = function(){
console.log(this.name + '正在睡觉!');
}
}
// 原型方法
Animal.prototype.eat = function(food) {
console.log(this.name + '正在吃:' + food);
};
call和Apple
call的方法
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
调用一个对象的一个方法,以另一个对象替换当前对象
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象
Apple方法
apply([thisObj[,argArray]])
应用某一对象的一个方法,用另一个对象替换当前对象
实现继承
function Animal(name){
this.name = name;
this.showName=function(){
alert(this.name);
}
}
functionCat(name){
Animal.call(this,name);
}
varcat=newCat("BlackCat");
cat.showName();
多重继承
function Class10()
{
this.showSub = function(a,b)
{
alert(a-b);
}
}
function Class11()
{
this.showAdd = function(a,b)
{
alert(a+b);
}
}
function Class2()
{
Class10.call(this);
Class11.call(this);
}
新选择器
querySelector:根据选择器规则返回第一个符合要求的元素
querySelectorAll:根据选择器规则返回所有符合要求的元素
网友评论