描述下你对js闭包。面向对象、继承的理解

1)闭包理解:

个人理解:闭包就是能够读取其他函数内部变量的函数;

使用闭包主要是为了设计私有的方法和变量。闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。在js中,函数即闭包,只有函数才会产生作用域的概念

闭包有三个特性:

1.函数嵌套函数

2.函数内部可以引用外部的参数和变量

3.参数和变量不会被垃圾回收机制回收

闭包常见用途:

创建特权方法用于访问控制

事件处理程序及回调

2) 面向对象:

面向对象编程,即OOP,是一种编程范式,满足面向对象编程的语言,一般会提供类、封装、继承等语法和概念来辅助我们进行面向对象编程。

参考:

http://www.ruanyifeng.com/blog/2010/05/object一oriented_javascript_encapsulation.html

3)继承:

对象继承分两种情况,一种是构造函数的继承,一种是原型(prototype)的继承:

1. 构造函数的继承,比较简单,只需要在子对象中添加代码:parent.apply(this, arguments);

关于原型的继承最优化的方法,利用空对象作为中介

2. 拷贝继承

可参考:

https://segmentfault.com/a/1190000002440502

http://blog.csdn.net/james521314/article/details/8645815

原文地址:https://www.cnblogs.com/DreamLiFeng/p/9959252.html

时间: 2024-10-10 13:27:00

描述下你对js闭包。面向对象、继承的理解的相关文章

关于面向对象“继承”的理解

面向对象三大精神支柱,首当其冲的是“继承”! 继承从代码复用的角度来说,特别好用,也特别容易被滥用和被错用.不恰当地使用继承导致的最大的一个特征就是高耦合(要补充一点,耦合是一个特征,虽然大部分情况是缺陷的特征,但是当耦合成为需求的时候,耦合就不是缺陷) 代码复用也是分类别的,如果当初只是出于代码复用的目的而不区分类别和场景,就采用继承是不恰当的. 就目前大多数的开发任务来看,继承出现的场景不多,主要还是代码复用的场景比较多,然而通过组合去进行代码复用显得要比继承麻烦一些,因为组合要求你有更强的

关于 JS 面向对象继承属性和方法的小例子

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>关于 JS 面向对象继承属性和方法的小例子</h1> </body> </html> <script> //人的构造函

js面向对象继承

前言 最近看到js面向对象这章节了,主要学习了原型和面向对象继承关系,为了梳理自己的知识逻辑,特此记录. js的面向对象 先说说我目前了解的js创建对象方法 1.写一个函数,然后通过new创建对象 2.字面量的方式 如果想要复用的话,可能会用到工厂方法 工厂方法每次都要创建对象 并返回 构造方法创建对象方法可以更简洁 然而构造方法用实现实例间共享共同的方法,比较麻烦 原型可以实现实例共享所有属性 每个函数都有指向原型对象的指针,如果将一个函数的原型属性赋值给另外函数的实例,函数的原型将指向另外一

探讨 JS 的面向对象中继承的那些事

最近学了 JS 的面向对象,这篇文章主要是探讨 JS 的面向对象中继承的那些事. JS中继承的特点: 1.子类继承父类: 2.子类可以用父类的方法和属性 3.子类的改变可以不影响父类 下面用一个例子来说明 JS 的继承 这段代码创建了一个父类以及它的原型,同时还创建了一个子类,并继承了父类的私有属性 1 <script> 2 //这是父类 3 function Father(name,age,marry){ 4 this.name=name; 5 this.age=age; 6 this.ma

真的了解JS的面向对象吗?

js的几种数据类型:number, string, boolean, object, undefined五种数据类型 js的常见内置对象类:Date, Array, Math,Number,Boolean, String, RegExp,Function,Object. js的两个类型判断方法:typeof.instanceof typeof:一元运算符,eg: typeof(1)将返回number.它返回的是顶级的几种数据类型 instanceof:二元运算符 eg: myObj instan

js闭包的作用

js闭包的用途详解 js闭包可以用在许多地方.它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中.具体怎么理解呢,各位看官请仔细看好下文 我们来看看闭包的用途.事实上,通过使用闭包,我们可以做很多事情.比如模拟面向对象的代码风格:更优雅,更简洁的表达出代码:在某些方面提升代码的执行效率. 1 匿名自执行函数 我们知道所有的变量,如果不加上var关键字,则默认的会添加到全局对象的属性上去,这样的临时变量加入全局对象有很多坏处,比如:别的函数可能误用

1、AJAX里面status的值代表什么 2、get post 的区别 3、怎样把对象转化成字符串 4、闭包、继承、原型、原型链 5 、http传输协议 6、arguments是什么

1.AJAX里面status的值代表什么     在JavaScript里面写AJax的时,最关键的一步是对XMLHttpRequest对象建立监听,即使用"onreadystatechange"方法.监听的时候,要对XMLHttpRequest对象的请求状态进行判断,通常是判断readyState的值为4且status的值为200或者304时执行我们需要的操作.以下记录了一些常用readState以及status的值及其含义 readyState 属性表示Ajax请求的当前状态.它的

javascript深入理解js闭包

一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量. Js代码 function f1(){ var n=999; } alert(n); // error 这里有一个地方需要注意,函数

深入理解js闭包

闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量. Js代码 function