js中,原型与闭包的案例分析

  介绍

这篇文章主要介绍js中,原型与闭包的案例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<强> 1,这关键字

,有对象指向对象,

b,没对象指向全局变量(窗口);

c,有新指向新出的新对象,

d,绑定,call&应用改变这样的指向;

e, setTimeout和setInterval这指向窗口;

f,箭头函数这是由函数定义时候确定的;

var加法器={   基础:1、      添加:函数(){   var f=v=比;v + this.base;   返回f (a);   },      addThruCall:函数inFun (a) {   var f=v=比;v + this.base;   var b={   基地:2   };      返回f。调用(b);   }   }; var obj={   我:10,   b:()=比;console.log(这一点。我,这个),   c:函数(){   控制台。日志(这。我,)   }   }   obj.b ();//定义窗口{…}原型   obj.c ();{//10对象……}

<强> 2,原型

原型:

原型:每一个对象都会在其内部初始化一个属性:即原型;

原型链:当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么就回去<代码> __proto__>

<代码>运算符原理是判断实例对象的__proto__和生成该实例的构造函数的原型是不是引用的同一个地址。

<代码> hasOwnProperty>

 js中,原型与闭包的案例分析

构造函数,→原型→原型对象→构造函数→构造函数

构造函数→新→实例对象

实例对象→__proto__→原型对象→__proto__→原型对象→→零

<强>

变量声明与函数声明,其作用域会提升到方法体的顶部;

作用域:

, javascript没有块级作用域

b, javascript除了全局作用域之外,只有函数可以创建的作用域。作用域在函数定义时就已经确定了。而不是在函数调用时确定。

闭包:

概念:内部函数可以访问外部函数中的变量;

使用:函数作为返回值;函数作为参数;

作用:封装变量,收敛权限;

缺点:消耗内存

<强>创建对象的方法:

对象字面量;

构造函数;

立即执行函数;

Object.create ();

<强>新对象过程:

创建新对象,

这指向这个新对象,

执行代码;

返回;

<强>类与继承:

<强>类的声明:

函数动物(){   this.name=& # 39;名字# 39;;   }//es6      类Animal2 {   构造函数(){   this.name=& # 39; name2& # 39;;   }   }

<强>继承:

1。借助构造函数实现继承

父函数(){   this.name=& # 39;父母# 39;;   }      函数子(){   Parent.call(这个);   这一点。类型=& # 39;child1& # 39;;   }

缺点:

部分继承;

继承不到父类原型对象上的方法;(只有父类的属性挂载到子类上了,孩子的原型没变为Child.prototype继承不了父母的原型)

2。原型链继

父函数(){   this.name=& # 39;名字# 39;;   }   函数子(){   这一点。类型=& # 39;孩子# 39;;   }      的孩子。原型=new父();

缺点:原型链上原型对象是共用的。(原型的属性修改,所有继承自该原型的类的属性都会一起改变)

3。组合方式

父函数(){   this.name=& # 39;父母# 39;;   }   函数子(){   Parent.call(这个);   这一点。类型=& # 39;孩子# 39;;   }   的孩子。原型=new父();

缺点:

父类执行函数执行两次;

构造函数指向父类;

父函数(){   this.name=& # 39;父母# 39;;   }   函数子(){   Parent.call(这个);   这一点。类型=& # 39;孩子# 39;;   }   的孩子。原型=Parent.prototype;

缺点:

子类构造函数指向父类

父函数(){   this.name=& # 39;父母# 39;;   }   函数子(){   Parent.call(这个);   这一点。类型=& # 39;孩子# 39;;   }   的孩子。原型=Object.create (Parent.prototype);   Child.prototype。构造函数=孩子;

优点:

子类的原型指向Object.create (Parent.prototype),实现了子类和父类构造函数的分离,但是这时子类中还是没有自己的构造函数,

js中,原型与闭包的案例分析