javascript-MDN笔记-函数
来源:互联网 发布:淘宝站内推广有哪些 编辑:程序博客网 时间:2024/06/06 08:42
1、函数作用域:
在函数内定义的变量不能在函数之外的任何地方访问。
定义在全局域中的函数可以访问所有定义在全局域中的变量。
在另一个函数中定义的函数也可以访问在其父函数中定义的所有变量和父函数有权访问的任何其他变量。
// 下面的变量定义在全局作用域(global scope)中var num1 = 20, num2 = 3, name = "Chamahk";// 本函数定义在全局作用域function multiply() { return num1 * num2;}multiply(); // 返回 60// 嵌套函数的例子function getScore () { var num1 = 2, num2 = 3; function add() { return name + " scored " + (num1 + num2); } return add();}getScore(); // 返回 "Chamahk scored 5"
2、闭包
JavaScript允许函数嵌套,并且内部函数可以访问定义在外部函数中的所有变量和函数,以及外部函数能访问的所有变量和函数。但是,外部函数却不能够访问定义在内部函数中的变量和函数。这给内部函数的变量提供了一定的安全性。而且,当内部函数生存周期大于外部函数时,由于内部函数可以访问外部函数的作用域,定义在外部函数的变量和函数的生存周期就会大于外部函数本身。当内部函数以某一种方式被任何一个外部函数作用域访问时,一个闭包就产生了。
var pet = function(name) { //外部函数定义了一个变量"name" var getName = function() { //内部函数可以访问 外部函数定义的"name" return name; } //返回这个内部函数,从而将其暴露在外部函数作用域 return getName; };myPet = pet("Vivie"); myPet(); // 返回结果 "Vivie"
闭包的用途 :主要就是1)读取函数内部变量 2)可以使这些变量一直保存在内存中。
例子:
1 function f(){ 2 var n = 999; 3 function f1(){ 4 alert(n+=1); 5 } 6 return f1; 7 } 8 var result = f(); 9 result(); // 100010 result(); // 100111 result(); // 1002
3、封装
私有属性和方法:函数有作用域,在函数内用var 关键字声明的变量在外部无法访问,私有属性和方法本质就是你希望在对象外部无法访问的变量。
特权属性和方法:创建属性和方法时使用的this关键字,因为这些方法定义在构造器的作用域中,所以它们可以访问到私有属性和方法;只有那些需要直接访问私有成员的方法才应该被设计为特权方法。
共有属性和方法:直接链在prototype上的属性和方法,不可以访问构造器内的私有成员,可以访问特权成员,子类会继承所有的共有方法。
共有静态属性和方法:最好的理解方式就是把它想象成一个命名空间,实际上相当于把构造器作为命名空间来使用。
1 /* -- 封装 -- */ 2 var _packaging =function(){ 3 //私有属性和方法 4 var name ='Darren'; 5 var method1 =function(){ 6 //... 7 } 8 //特权属性和方法 9 this.title ='JavaScript Design Patterns' ;10 this.getName =function(){11 return name;12 }13 }14 //共有静态属性和方法15 _packaging._name ='Darren code';16 _packaging.alertName =function(){17 alert(_packaging._name);18 }19 //共有属性和方法20 _packaging.prototype = {21 init:function(){22 //...23 }24 }
0 0
- javascript-MDN笔记-函数
- javascript-MDN学习笔记
- javascript-MDN笔记-对象
- javascript-MDN学习笔记-Array部分
- javascript-MDN笔记-产生固定范围随机数
- 【笔记】【MDN】JavaScript指南 > 语法和数据类型
- javascript MDN网址
- MDN Web 技术文档 - JavaScript Strict mode
- 对于javascript MDN 中let 和var范例的认识
- 手写bind()函数,理解MDN上的标准Polyfill
- javascript 函数调用笔记
- javascript函数调用笔记
- Javascript学习笔记-----函数
- 《Eloquent JavaScript》笔记--函数;
- javascript笔记:函数
- 笔记:JavaScript函数
- JavaScript 函数学习笔记
- JavaScript笔记:函数表达式
- Orchid poll 剖析
- 什么是真的学习能力
- PLSQL Recursion DB
- iframe获取父、子窗口的方法
- maven+hudson+git持续集成
- javascript-MDN笔记-函数
- IO复用之epoll
- Python(Pygame)字体设置
- Jenkins+Maven+Git搭建持续集成和自动化部署的配置手记
- Jquery和javascript在使用上的区别
- 【GDOI 2014】beyond
- LeetCode 523. Continuous Subarray Sum 解题报告
- visual studio常用快捷键
- Jenkins + Git + Maven + tomcat集成环境(转)