js闭包与封闭函数与其他知识点

闭包函数

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:根据选择器规则返回所有符合要求的元素

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,377评论 2 17
  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,357评论 1 10
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,143评论 0 2
  • var navigator = navigator || {};var window = window || {}...
    DF_Sky阅读 5,063评论 0 0
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,964评论 1 45