| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> JavaScript 闭包 原型 -> 正文阅读 |
|
[JavaScript知识库]JavaScript 闭包 原型 |
1.? ? JavaScript 闭包1.? ? 什么是闭包???由一个函数和函数可以访问到的一个变量组成一个闭包 「函数」和「函数内部能访问到的变量」的总和,就是一个闭包??
2.? ? 闭包的作用??正常函数执行完毕后 , 声明的变量会被处理掉 , 但是闭包可以让作用域里的 变量 , 在函数执行完之后依旧不会被处理掉 1.? ? JavaScript 作用域全局变量的作用域可以在所有函数中? ? ? ?局部变量的作用域只能在当前函数中? 1.? ? JavaScript ?全局变量
在函数外部定义变量,所有函数都可以访问? 2.? ? JavaScript ?局部变量在函数内部定义声明变量 ,只有本函数可以访问 3.? ? JavaScript ?函数内部未声明的变量如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量
4.? ? JavaScript ?函数参数函数参数只在函数内起作用,是局部变量
全局变量会覆盖window 对象的变量 局部变量,包括 window 对象可以覆盖全局变量和函数
2.? ? 闭包隐藏变量的改变方法
以上函数 test2 只可以调用 test1 中的变量?local ,而无法修改变量值 闭包不是函数套函数 2.? ? JavaScript?原型我们先看俩个数组的对比 :
我们可以看到俩个数组比较返回的布尔值是 false ,是因为arr1和arr2中的元素和元素个数不同 而俩个数组的 sort 方法比较时返回的布尔值是 true ,是因为arr1和arr2使用的是相同的sort方法,sort方法是arr1和arr2的公共方法 那么 JavaScript 是如何做到让sort方法是arr1和arr2的公共方法 ?? 例子 :数组求和方法
可以看到??alert(arr2.getSum());? ?报错? ,是因为变量 arr2 没有定义 getSum() 方法 那么有没有什么解决方案,函数只定义一次,然后提供给不同的变量使用呢?? 答案是有的,我们可以将 getSum 定义为原型方法 Array.prototype.getSum = function() {......}将getSum()方法给了Array.prototype
此时 getSum() 方法就成了原型方法,由此可知 Array.prototype 是数组的原型对象 得到的结果是对象 arr1 ,arr2 就可以共享 getSum 方法了 1.? ? JavaScript?原型对象在传统的 OOP 中,首先定义“类”,此后创建对象实例时,类中定义的所有属性和方法都被复制到实例中。在 JavaScript 中并不如此复制,而是在对象实例和它的构造器之间建立一个链接(它是__proto__属性,是从构造函数的prototype属性派生的),之后通过上溯原型链,在构造器中找到这些属性和方法。
在对象实例 stu 和它的构造器? ?student(){}? 之间建立一个链接? ?__proto__? 属性 ,? __proto__? 属性是从构造函数的 prototype 属性派生的 之后通过上溯原型链,在构造器中找到这些属性和方法? 上溯原型链? stu →? __proto__? →? student.prototype →?构造函数 student 的属性
|
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 17:05:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |