位置: 编程技术 - 正文

JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法(js面向对象面试题)

编辑:rootadmin

推荐整理分享JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法(js面向对象面试题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js面向对象的三大特性,js面向对象的理解,js面向对象还是面向过程,js面向对象面试题,js面向对象编程实例,js面向对象还是面向过程,js面向对象面试题,js面向对象的三大特性,内容如对您有帮助,希望把文章链接给更多的朋友!

1.Object类

在JS中,Object是所有类的基类,使用Object类来创建自定义对象时,可以无需定义构造函数(constructor,prototype,hasOwnProperty(property))

我们想在程序中得到一个对象变量,只要能存储大量数据即可,这个时候,我们可以考虑使用Object类。Object类避免了对构造器的定义。 Object类下另一个常用的属性:hasOwnProperty

2.静态属性

在有些面向对象的语言当中,可以使用static关键字定义类的静态属性或者静态方法,在JS中,可以进行模拟。

语法:

类名.属性名

类名.属性=function(){}

添加静态属性和静态方法:

3.闭包

概念:所谓闭包,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因此这些变量也是该表达式的一部分。

提出一个问题:

在全局中,不能访问局部变量i,因为作用域不同,而且,在display函数执行完毕后,局部变量i会被回收。 闭包的功能:“访问局部变量”和“使变量所占的内存不被释放”

通过例1我们知道:变量是可以指向函数的首地址的,函数也可以返回另一个函数的首地址。

通过例2我们知道:使用一个拒不函数包含变量i,这样局部变量i的内存不会被回收。

在例3中,因为i的内存永远不会被回收,所以每次调用fn2,i的值会+1。运行的结果是弹出,弹出,弹出。

闭包的原理:在例3中,共有三个作用域:全局作用域,fn1的作用域,fn2的作用域。在全局作用域里有test=fn1(),其实这句话就相当于test=fn2。在fn1作用域里有 var i=和return fn2,在fn2作用域例有alert(i++)。当全局作用域下的test=fn1()执行时,test指向了fn2的作用域,这个时候fn2作用域下的i被全局作用域钩住,根据作用域链的法则,fn2下并没有定义i,所以在fn2下的i往上一层作用域上找,找到了fn1作用域下的var i=。所以全局的test钩住了fn2的i,fn2的i钩住了fn1的i,所以fn1运行完毕后,不会被回收。

4.私有属性

在面向对象思想中,对于有些敏感的,不想公开的成员可以定义为私有的,在JavaScript中可以模拟这个功能。

语法:

var :私有

this :公有

在上面这个例子中,我们想用 var 来表示私有成员属性,但 Person 构造函数执行完毕后, age 会被回收,不能当做成员属性来使用。

this.setAge和this.getAge两个方法使用到了局部变量age,所以age不会被回收。

如果只有set方法,说明该属性是只写属性。

如果只有get方法,说明该属性是只读属性。

5.call和apply的使用

call和apply的功能:使用指定的对象调用当前函数。call和apply的功能完全相同,只是在语法上略有不同。

JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法(js面向对象面试题)

语法:

call([thisObj[,arg1[,arg2[,argN]]]])

第一个参数:函数执行时,this指向谁

后面的参数:根据需要顺序指定

apply([thisObj[,argArray]])

第一个参数:函数执行时,this指向谁

第二个参数:数组,表示参数集合

在js中,函数有几种调用形式:

使用call和apply来调用

call和apply在执行时做了两件事:1)将函数内部this指向了第一个参数 2)调用函数

另外:还可以这样解决问题:

P1.say=speak;

P1.say();

这样解决和上面解决方法有本质上的区别:

上面的解决办法是直接调用speak函数,只不过函数内部this的指向发生改变。

下面的解决办法会为p1对象增加属性,p1对象的“体积”会变大。

举例说明:

6.继承的三种实现方法

概念:在有些面向对象语言中,可以使用一个类(子类)继承另一个类(父类),子类可以拥有父类的属性和方法,这个功能可以在js中进行模拟。

三种方法:

第一种:扩展Object方法

举例说明:

第二种:使用call和apply方法

语法:

父类构造器.call(this,.......);

第三种:原型继承

语法:

子类.prototype = new 父类();

以上内容给大家介绍了JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法,希望对大家有所帮助!

js判断图片加载完成后获取图片实际宽高的方法 本文实例讲述了js判断图片加载完成后获取图片实际宽高的方法。分享给大家供大家参考,具体如下:通常,我们会用jq的.width()/.height()方法获取图片的

JavaScript实现搜索框的自动完成功能(一) 在很多需要搜索的网站,都会有一个自动完成的搜索框.方便用户查找他们想要的搜索词.帮助用户快速找到自己想要的结果.这种方式是比较友好的.所以是

灵活的理解JavaScript中的this指向 this是JavaScript中的关键字之一,在编写程序的时候经常会用到,正确的理解和使用关键字this尤为重要。首先必须要说的是,this的指向在函数定义的时候

标签: js面向对象面试题

本文链接地址:https://www.jiuchutong.com/biancheng/380355.html 转载请保留说明!

上一篇:JavaScript代码因逗号不规范导致IE不兼容的问题(js代码不生效)

下一篇:深入php面向对象、模式与实践(深入php面向对象、模式与实践第5版 电子书)

  • 预缴增值税需要预缴城建税吗
  • 股东撤资涉及到哪些税如何缴纳?
  • 小规模企业可以收增值税专用发票吗
  • 电子发票和纸质发票只能二选一吗
  • 营业收入与利润变化图
  • 小规模纳税人不开票收入怎么报税
  • 独资合伙企业的所有者用于承担企业财务风险的财产是
  • 出口退税申报流程视频
  • 制造费用可以抵进项税吗
  • 股东货币出资比例
  • 顾客办理会员卡要退怎么办
  • 公司收到股东的投资款以后怎么处理
  • 投资者投入固定资产的成本
  • 水利建设基金怎么计提
  • 应交增值税期末余额在借方表示什么
  • 小规模纳税人附表一怎么填
  • 长期股权投资账面价值和公允价值不一致
  • 资产总额季初和季末
  • 所得税补缴自查需要缴纳什么
  • 流动资产周转次数
  • 本月暂估入库,下月
  • 固定资产替换公式
  • 如果被客户骗了货款怎么办
  • 文件类型有几种分类
  • 公司贷款过桥费合法吗
  • 公司投资股票如何做账
  • 以前年度损益调整借贷方向
  • nvm安装及全局配置node
  • 售后回购怎么做账务处理
  • 培训类产品
  • 固定资产没有发票可以计提折旧吗
  • 购入电脑可以入成本里吗
  • 大雾山国家公园在哪里
  • php redis使用
  • 债务重组收入属于什么科目
  • css水平居中和垂直居中怎么设置
  • sftp 加密算法
  • thinkphp6验证
  • 增值税折扣发票有折扣字样
  • 公司购买购物卡送客户的会计分录
  • 设备调试费是什么税
  • 关于帝国战争的游戏
  • 财务费用账户属于什么账户
  • 体检费用需要缴哪些费用
  • 简易纳税额
  • 短期借款的账务处理例题
  • 未开票收入申报有税务风险吗
  • 资本公积溢价转增
  • 账面价值大于计税基础是调增还是调减
  • 外单位替本单位缴纳社保
  • 收回以前年度的应收账款较多能说明什么呢?
  • 固定资产账实不符违反的规定
  • 现金日记账年结怎么做
  • 出包方式建造固定资产的成本包括
  • 个人独资企业个体工商户的区别
  • 补交上年度的企业所得税税款计入什么科目
  • 公转私怎么操作
  • 金蝶软件kis标准版操作流程
  • 购货方付款会计分录
  • 如何做好现金流
  • 生育津贴申请流程
  • 营业外支出增加说明了什么
  • win8怎么看windows
  • 老旧的诗琴五个琴谱大全
  • linux启动后出现grub
  • windows10开机黑屏
  • win7系统清理c盘空间不足
  • unity shader editor
  • ajax请求数据放到页面
  • 初始学历是什么意思
  • jQuery select自动选中功能实现方法分析
  • JavaScript中的数据类型分为两大类
  • unity教程 知乎
  • JavaScript html5 canvas画布中删除一个块区域的方法
  • python登陆代码
  • python html转markdown
  • 北京市平谷区有地铁吗?
  • 掌上海关怎么查询
  • 耕地占用税减免税范围包括
  • 硅矿的合法开采方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设