javascript中的继承特性

来源:互联网 发布:朴正花网络剧 编辑:程序博客网 时间:2024/05/01 21:08
  • 面向对象编程语言分类
    1. 基于类继承:比如java,C++
    2. 基于原型继承:比如javascript
  • 原型继承是动态完成的,添加到原型上的方法会即时生效,即便对象实例在新方法赋予到原型之前已经存在,也能获得新方法
  • javascript没有块作用域,因此不同于C语言尽可能延迟声明变量,在javascript中,应该把所有的局部变量定义放在函数定义的最开始地方
  • 闭包是指外部通过调用一个函数来返回一个对象,虽然这个返回对象自身内部能够访问到它创建时的上下文环境,但暴露给外部调用者时却可以隐藏此上下文
  • javascript能有闭包这一特性,得益于:
    1. 函数可以嵌套,外层函数可以在内部嵌套子函数
    2. 函数作用域,外层函数定义的变量,内层函数可以访问到,反过来不成立
    3. 在函数块外,不能访问到函数块内部定义的任何局部变量
    4. 函数可以返回一个简单类型,一个字面量对象,或者是一个函数
    5. 要成功使用闭包,外层必须先要有一个函数,该函数最终返回一个授权函数
  • 使用闭包,最主要是希望模拟出类似于java中类的私有private属性(方法)的操作,这在面向对象以及模块开发方面有重要意义
  • 早期的javascript,只是作为运行在浏览器环境下的,支持客户端动态交互的一种脚本语言,所以全局变量不是个大问题
  • 但随着javascript越来越多的用在前端框架上(如ember),甚至服务端(如NodeJS),面向对象和模块开发成了必然选择
  • 当构造器中的参数很多的情况下,可以使用JSON定义的对象字面量方式传入,这种方式构造对象的好处是
    1. 参数的可扩展性
    2. 不依赖参数顺序
    3. 允许参数默认值
  • 在js继承模式的道路上,一路走来,我们有下面两种方式
    1. 通过new构造器+指定原型prototype对象,但这种方式无法真正实现数据隐藏和封装,因此也就不能做到保护对象完整性
    2. 通过json对象字面量构造参数+闭包,由于闭包这种方式能真正隐藏私有数据和属性,因此可以做到对象的完整性保护
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 obs直播有电流音怎么办 语音里网吧很吵怎么办 电脑k歌有延迟怎么办 想开个跆拳道馆怎么办营业执照? 壶嘴拐弯处漏水怎么办 裂纹茶壶嘴坏了怎么办 小孩刚上学怕她上火怎么办 在幼儿园小朋友不愿叠衣服怎么办 孩子在家听话幼儿园不听话怎么办 变魔术时观众说看过这个怎么办 孕妇8个月摔跤了怎么办 孩子吃了残奶怎么办 小米手机变卡了怎么办 主持时说错话了怎么办 小鲜肉老了不红怎么办 同学聚会大家玩手机你怎么办 率土之滨被掠夺怎么办 戒指戴手上取不下来怎么办 择离开我我该怎么办 解小手解不出来怎么办 学生把班里的班费弄丢了怎么办 班里选的班长成绩差怎么办 幼儿园班里孩子发生传染病怎么办 小仓鼠生了该怎么办 把老公生日忘了怎么办 老公说老婆脑子不好怎么办 和上司暧昧被同事发现怎么办 减肥不吃晚餐饿了怎么办 小孩晚饭吃多了怎么办 减肥晚上不吃饭饿了怎么办 两个人在一起性格不合怎么办 赌在你身上输了怎么办 苹果7lcould满了怎么办 e招贷不用了怎么办 牙活动了怎么办还疼 30岁掉了一颗牙怎么办? 在淘宝上交话费交错了怎么办 演出队在小区旁边扰民怎么办 雷雨天加了油怎么办 戴ok镜眼睛重影怎么办 乌龟背上长白色的花纹怎么办?