位置: 编程技术 - 正文

举例说明JavaScript中的实例对象与原型对象(举例说明Java实现适配器模式)

编辑:rootadmin

推荐整理分享举例说明JavaScript中的实例对象与原型对象(举例说明Java实现适配器模式),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:举例说明的作用,举例说明Java实现适配器模式,举例说明Java实现适配器模式,举例说明Java实现适配器模式,举例说明Java实现适配器模式,举例说明Java实现适配器模式,举例说明javascript中字符串转换为整数和浮点数,举例说明javascript常量与变量,内容如对您有帮助,希望把文章链接给更多的朋友!

首先声明:javascript中每个对象都有一个constructor属性和一个prototype属性。constructor指向对象的构造函数,prototype指向使用构造函数创建的对象实例的原型对象。

在这段代码中会报错,sayName() is not defined。根据javascript高级程序设计第二版的解释,是因为重写的原型切断了构造函数与最初原型之间的联系。但是我们调整一下上面语句的顺序。如下:

注意上面两段代码等号中间的语句。按第二段的顺序写代码,将会输出 ”zxs“,这个结果说明在第一种情况下报错并不能说明是因为切断了构造函数与原想之间的联系引起的。

本来就是一种定义对象的方法,而且在javascript中每个对象的constructor属性都默认的指向Object构造函数,这也就不难说明重写原型对象确实切断了构造函数与最初原型之间的联系,但并不能说明这种联系被切断之后 person就不能访问到sayName()函数。

现在有这样的假设:函数的prototype属性所指向的原型对象,与我们显示新建的原型对象并不是完全等同的。当我们调用函数的时候会创建一个原型对象,此时会首先查找当前环境中是否存在其原型对象,如果程序中不存在,就创建一个,如果环境中存在,侧查找他们的属性和方法,最后根据查找的结果返回一个原型对象,这个对象中的属性和方法总是优先使用默认原型中的属性和方法,也就是构造函数中定义的属性和方法。当当调用的方法或属性不存在于默认的原型中时,才使用定义在Person.prototype = {} 的属性和方法。

javascript是解释性的语言,语句都是顺序执行的,在第一段代码中,当我们使用 new 关键字创建新对象的时候,Person.prototype = {} 并没有执行,也就是说在当前的执行环境中找不到其中定义的方法和属性,而构造函数中没有该方法,所以出错。就像一个变量,给他赋值的时候程序没有执行将不能使用。在第二段中环境中已经存在该调用的方法,构造函数的原型对象已经创建完毕,所以可以得到结果。

举例说明JavaScript中的实例对象与原型对象(举例说明Java实现适配器模式)

再看下面的一段程序:

从这里可以看出使用 Person.prototype.name = '',的方式不论在什么地方创建对象都能被访问,如果同时存在对象字面量和这种方法定义原型对象,将使用后定义的作为最终值。并且对原型对象使用对象字面量定义之后,该定义必须出现在创建对象的语句之前才能被访问到。

实例不能访问到原型对象中的属性和方法,不仅仅是因为重写原型对象切断了构造函数与最初原型之间的联系。

以上代码在实例化对象时构造函数的原型为空,它没有任何除默认属性以外的属性。重写构造函数的原型确实切断了构造函数与最初原型之间的联系。

在使用 new 操作符以后构造函数的原型对象中的属性和方法已经添加到 person对象中。因为以上方法为函数原型添加新属性和方法不具有动态性,所以person不能访问到新添加的属性和方法。

重写原型对象之后,就如同如下代码:

此时输出的值是undefined,因为,对象是一个引用类型,“=”是赋值操作符,并且其运算顺序是从右往左。o={}就是说o的指向已经改变,是一个空对象。Person.prototype.mothed = function() {}与Person.prototype={mothed:function(){}}的区别就如同 arr = []和arr.push()一样,前者都是修改自身,后者是完全改变自身。

JavaScript操作HTML DOM节点的基础教程 因为DOM的存在,这使我们可以通过JavaScript来获取、创建、修改、或删除节点。NOTE:下面提供的例子中的element均为元素节点。获取节点父子关系element.par

JavaScript中循环遍历Array与Map的方法小结 js循环数组各种方法eg1:for(vari=0;imyStringArray.length;i++){alert(myStringArray[i]);//Dosomething}eg2:Array.prototype.foo="foo!";vararray=['a','b','c'];for(variinarray){alert(array[i]);}fo

详解JavaScript中数组和字符串的lastIndexOf()方法使用 Array.prototype.lastIndexOf和String.prototype.lastIndexOf是非常的实用的方法,不过很多人不知道它其实可以传递两个参数,第二个参数决定了搜索的起始位置:语

标签: 举例说明Java实现适配器模式

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

上一篇:javascript中call apply 与 bind方法详解

下一篇:JavaScript操作HTML DOM节点的基础教程(js+html)

  • 计提附加税金额
  • 以前年度多缴纳的企业所得税退还
  • 去参加博览会的英文
  • 贷款公司是怎么贷款的
  • 广告发布费属于什么征税项目
  • 每月10万不要交税从什么时候开始
  • 公司变更地址要股东签字吗
  • 购买的发票进项税和成本怎么转出
  • 其他货币资金存出投资款什么时候用
  • 贷款金融资产减值的会计分录怎么写?
  • 诉讼财产保全保险费计算
  • 冲销应收账款会引起
  • 没有实收资本是负债吗
  • 待处理财产损益是什么意思
  • 小企业发生销售折让的原因
  • 小规模转一般纳税人生效时间
  • 销项发票遗失怎么办
  • 建筑企业在增值税方面新出台的政策
  • 马克龙成就
  • 农民专业合作社属于什么企业类型
  • 外购软件可以加计扣除吗
  • 个人劳务费增值税税率是多少2023
  • 应付账款借方余额怎么平账
  • 个人可以做代理吗
  • 离职有补偿金的可不可以领取失业金
  • 企业发生的白条是什么
  • 发票跨期审计调查报告
  • 企业取得代理销售发票
  • 出口退税过期了怎么办理
  • 无形资产的摊销应计入什么科目
  • 腾讯手游助手玩不了金铲铲
  • macOS Big Sur 11.3 开发预览版 Beta正式更新
  • 股东以债权出资,公司怎么处理
  • 农村自建房买卖怎样才合法
  • 补缴以前年度公积金误入当年费怎么办
  • 税务稽查补税
  • php文本操作
  • 企业向个人提供咨询服务
  • 怎么用云服务
  • 企业经营状态有哪几种
  • 如何修改php网页内容
  • 数据库impala
  • javascript基础书
  • 收到员工的社保费用记什么科目
  • 接受捐赠收入如何纳税
  • 出差餐补属于福利费吗
  • 什么是财务报表分析,方法有哪些
  • 企业发生的咨询费应计入哪个科目
  • 织梦的首页怎么换图片
  • sql数据库移动
  • mongodb数据库操作遇到的问题和解决方案
  • 纳税人遗失税务登记证件并按照规定
  • 扣伙食费会计分录
  • 增值税延期滞纳金计算
  • 公司与个人可以合伙吗
  • 增值税扣款了能退回吗?
  • 仓库盘点后的数据怎么处理
  • 应收款项计提坏损怎么算
  • 应交税费为负数在资产负债表中的列报
  • 财务会计期末总结
  • 报销管理规定
  • 开发票时怎么操作收款人 复核人 开票人?
  • 三星电脑安装系统为什么进入不了安装页面
  • windows 7光盘
  • WIN10系统英文怎么改中文?
  • 在linux系统中获取帮助信息的命令为
  • windows 7如何连接
  • win7系统怎么关闭病毒防护
  • javascript数据结构与算法第三版
  • Extjs4 Treegrid 使用心得分享(经验篇)
  • jQuery添加类名
  • 重庆地方税务局12366
  • 已申报的纳税申报表怎么修改
  • 移动退订业务怎么恢复
  • 江苏税务查询授权验证码
  • 关注龙江医保
  • 国税局的标志
  • 残疾人的房产可以买卖吗
  • 土地交的契税会计科目
  • 河北省餐饮经营单位安全生产规定
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设