首页 > 其他分享 >原型、原型链、优点////作用域、作用域链////闭包、应用场景、优点、存在的问题

原型、原型链、优点////作用域、作用域链////闭包、应用场景、优点、存在的问题

时间:2022-10-22 11:22:40浏览次数:43  
标签:闭包 函数 作用域 对象 优点 原型 属性

一、原型、原型链、优点

1、原型:在javascript中,函数可以有属性。每个函数都有一个特殊的属性叫做原型(prototype)

2、原型链:JavaScript常被描述为一种基于原型的语言(prototype--based language)——每个对象拥有一个原型对象,对象以其原型为模板

、从原型继承方法和属性。原型对象也可能拥有原型,并从中承方法和属性,一层一层、以此类推。这种关系常被称为原型链
(prototype chain),它解释了为何一个对象会拥有定义在其他对象中的属性和方法。

简单来说:原型链就是在当前对象中找不到定义的话,会在当前对象的原型对象上继续查找,直至undefined

3、原型和原型链的优点

实例对象可以共享构造函数原型属性和方法,节省内存。构造函数原型上的属性和方法越多,节省内存越大

二、作用域、作用域链

1、作用域:作用域是在运行时代码中的某些特定部分中变量,函数和对象的可访问性,作用域决定了代码区块中变量和其他资源的可见性

  ES6后,作用域分为:全局作用域、函数作用域、块级作用域

2、作用域链:在某个函数的内部作用域查找某个变量时,没有找到就会到父级作用域查找,父级没有找到会一层一层向上查找,直到找到全局作用域还没找到,就放弃。这种一层一层的作用域嵌套,就是作用域链

 三、闭包、应用场景、优点、存在的问题

1、闭包:在内层函数中访问到外层函数的作用域

2、应用场景:事件函数的封装、用闭包模拟私有方法、在循环中给页面元素绑定事件响应函数

3、优点:变量长期驻扎在内存中、避免全局变量污染、私有成员的存在

4、存在的问题:带来内部变量常驻内存(造成网页性能问题,IE中内存泄漏)=====》解决:在退出函数前,删除不使用的局部变量

闭包在父函数外部,改变父函数内部变量的值。若把父函数当作对象使用,把闭包当作公用方法,把内部变量当作私有属性====》注意不能随意改变父函数内部变量的值

标签:闭包,函数,作用域,对象,优点,原型,属性
From: https://www.cnblogs.com/jundianlucky/p/16815649.html

相关文章

  • js 变量作用域与解构赋值| 22
    在JavaScript中,用​​var​​申明的变量实际上是有作用域的。如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量:'usestrict';functionf......
  • vue 中 slot 的使用方式,以及作用域插槽的用法
     使用场景:vue提供组件插槽能力,允许开发者在封装组件时,把不确定的部分定义为插槽‘<slot>夹着内容默认显示内容,如果不给插槽slot传东西,则使用<slot>夹着的内容在......
  • Vue笔记3 计算属性 ES6语法、作用域闭包var/let/const、v-if/v-else/v-else-if 、v-sh
              闭包                    事件冒泡 阻止默认事件        key="username"......
  • js对象和原型、原型链的关系
    JS的原型、原型链一直是比较难理解的内容,不少初学者甚至有一定经验的老鸟都不一定能完全说清楚,更多的"很可能"是一知半解,而这部分内容又是JS的核心内容,想要技术进阶的话肯......
  • 创建型模式~原型模式
    preknowledge:1值类型&引用类型~内存四区值类型:intfloatdouble引用类型:string实例对象内存四区:OP将内存划分为四个区域:代码段,全局变量区,栈,堆~不同......
  • Tutorial 6_原型模式
    向量的原型用C++完成数学中向量的封装,其中,用指针和动态申请支持向量长度的改变,使用浅克隆和深克隆复制向量类,比较这两种克隆方式的异同。浅克隆  深克隆  ......
  • 变量 常量 作用域
    变量publicclassWithZVariable{//类变量staticintabc=66;//实例变量从属于对象;如果不自行初始化,这个类型默认值为00.0//布尔值:默认是fals......
  • Java有什么优点,要如何学习Java
    Java的优点​  Java简单,易于设计,易于编写,因此比其他任何Java都易于编译,调试和学习。Java是面向对象的,用于构建模块化程序和其他应用程序中的可重用代码。Java与平台无关......
  • 【设计模式】原型模式(只能说很少用)
    针对原型模式(我有把这个模式命名为克隆模式)的定义(设计意图)原型实例指定创建对象的种类,并通过拷贝这些原型来创建新的对象。(所以核心是:拷贝原型对象)直接基于内存进行拷贝......
  • C语言变量的作用域和生命周期
    变量的分类1、局部变量2、全局变量例如:作用域1、局部变量:其作用域为{ }内部例如:2、全局变量:其作用域为整个项目(工程)例如:再如:生命周期1、局部变量:进入作用域生命周期开始......