博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js回忆总结
阅读量:5772 次
发布时间:2019-06-18

本文共 1381 字,大约阅读时间需要 4 分钟。

  • 闭包
  1. 在函数内部声明一个函数并返回 
  2. 原函数的内部变量在外部无法访问,但对内部函数是可见的,返回一个内部函数,则对外提供了一个操作函数内部变量的接口
  3. 一直在内存中  
1 var fn=function(){ 2     var i=0;  3     var add=function(){i++;alert(i)}; 4     return add; 5 } 6  7 res=fn(); 8  9 res();         //110 res();         //2

 

  • 封装

    为了实现数据的封装,必须使用作用域,而javascript中唯一具有作用域的是函数,于是数据封闭就通过函数来完成

  1. 私有属性:在构造函数中用 var 定义的, 函数外部无法访问函数内部数据,从而模拟私有
  2. 特权属性和方法: 用this创建, 和对象实例绑定, 可以访问私有属性和方法,(访问私有属性直接使用 属性名; 而访问特权属性,由于和实例绑定,需用 this.属性名); 只有要访问私有属性的函数才应该设计为特权方法;
  3. 公有属性和方法: 在prototype上的属性和方法,子类会继承所有公有成员,并且使用同一份;可以访问特权成员,但无法访问私有成员
  4. 公有静态成员: 在类上定义的类属性,直接用 类命.成员名 访问
1 Obj=function(name,age){ 2     //私有属性 3     var name=name; 4  5     //特权属性 方法 6     this.age=age ; 7     this.getName=function(){
return name} 8 } 9 10 //公有属性 方法11 Obj.prototype.id=1;12 Obj.prototype.getAge=function(){13 return this.age; 14 }15 16 //静态17 Obj.fn=function(){18 ....19 }
  • 继承
  1. 对象冒充
1 function ClassA(name){ 2     this.name=name; 3 } 4 ClassA.prototype.getName=function(){ 5     return this.name; 6 } 7  8 function ClassB(name, age){ 9 //    this.newMethod=ClassA;10 //    this.newMethod(name);11 //    delete this.newMethod;12     ClassA.call(this,name);13     14     this.age=age;15 }16 ClassB.prototype=new ClassA();17 ClassB.prototype.constructor=ClassB;18 ClassB.prototype.getAge=function(){19     return this.age;20 }
  1. 原型链
  2. call()和apply()方法

 

转载于:https://www.cnblogs.com/iori-zy/p/3242227.html

你可能感兴趣的文章
Spring Cloud构建微服务架构—服务消费基础
查看>>
RAC实践采坑指北
查看>>
runtime运行时 isa指针 SEL方法选择器 IMP函数指针 Method方法 runtime消息机制 runtime的使用...
查看>>
LeetCode36.有效的数独 JavaScript
查看>>
Scrapy基本用法
查看>>
PAT A1030 动态规划
查看>>
自制一个 elasticsearch-spring-boot-starter
查看>>
软件开发学习的5大技巧,你知道吗?
查看>>
java入门第二季--封装--什么是java中的封装
查看>>
【人物志】美团前端通道主席洪磊:一位产品出身、爱焊电路板的工程师
查看>>
一份关于数据科学家应该具备的技能清单
查看>>
机器学习实战_一个完整的程序(一)
查看>>
Web框架的常用架构模式(JavaScript语言)
查看>>
如何用UPA优化性能?先读懂这份报告!
查看>>
这些Java面试题必须会-----鲁迅
查看>>
Linux 常用命令
查看>>
NodeJS 工程师必备的 8 个工具
查看>>
CSS盒模型
查看>>
ng2路由延时加载模块
查看>>
使用GitHub的十个最佳实践
查看>>