位置: 编程技术 - 正文

[推荐]javascript 面向对象技术基础教程([推荐]抖音上那些好看的视频和有才的帐号)

编辑:rootadmin

结果呢,看了大半天,有了一个大概的了解,细细一回味,好像什么都没懂... 这篇文章是参考<<javascript-the definitive guide,5th edition>>第7,8,9章而写成的,我也 会尽量按照原书的结构来说明javascript的面向对象技术(对象/数组->函数-->类/构造函数/原型).对一些我自己也拿捏不准的地方,我会附上原文的英文语句,供大家参考. 如果不做说明,则文中出现的所有英文语句(程序体除外)都是引自<<javascript-the definitive guide,5th edition>>. ------------------------------------------------- 对象和数组(Objects and Arrays) 什么是对象?把一些"名字-属性"的组合放在一个单元里面,就组成了一个对象.我们可以理解为javascript中 的对象就是一些"键-值"对的集合(An object is a collection of named values. These named values are usually referred to as properties of the object.--Section3.5). "名字"只能是string类型,不能是其他类型,而属性的类型则是 任意的(数字/字符串/其他对象..).可以用new Object()来创建一个空对象,也可以简单的用"{}"来创建一个 空对象,这两者的作用是等同的. 从上面的例子我们也可以看到,访问一个对象的属性,可以简单的用对象名加"."后加属性的名字,也可以用"[]"操作符来获取,此时在[]里面的属性名字要加引号,这是因为对象中的索引都是字符串类型的. javasript对象中属性的个数是可变的,在创建了一个对象之后可以随时对它赋予任何的属性. 通过"."操作符获取对象的属性,必须得知道属性的名字.一般来说"[]"操作符获取对象属性的功能更强大一些, 可以在[]中放入一些表达式来取属性的值, 比如可以用在循环控制语句中,而"."操作符则没有这种灵活性。 delete操作符可以删除对象中的某个属性,判断某个属性是否存在可以使用"in"操作符. 需要注意,对象中的属性是没有顺序的. 对象的constructor属性 每一个javascript对象都有一个constructor属性.这个属性对应了对象初始化时的构造函数(函数也是对象). 数组 我们已经提到过,对象是无序数据的集合,而数组则是有序数据的集合,数组中的数据(元素)通过索引(从0开始)来访问, 数组中的数据可以是任何的数据类型.数组本身仍旧是对象,但是由于数组的很多特性,通常情况下把数组和对象区别 开来分别对待(Throughout this book, objects and arrays are often treated as distinct datatypes. This is a useful and reasonable simplification; you can treat objects and arrays as separate types for most of your JavaScript programming.To fully understand the behavior of objects and arrays, however, you have to know the truth: an array is nothing more than an object with a thin layer of extra functionality. You can see this with the typeof operator: applied to an array value, it returns the string "object". --section7.5). 创建数组可以用"[]"操作符,或者是用Array()构造函数来new一个. Js代码 用new Array()来创建数组时,可以指定一个默认的大小,其中的值此时为undefined,以后可以再给他们赋值.但是由于 javascript中的数组的长度是可以任意改变的,同时数组中的内容也是可以任意改变的,因此这个初始化的长度实际上 对数组没有任何的约束力.对于一个数组,如果对超过它最大长度的索引赋值,则会改变数组的长度,同时会对没有赋值 的索引处赋值undefined,看下面的例子. Js代码 可以用delete操作符删除数组的元素,注意这个删除仅仅是将数组在该位置的元素设为undefined,数组的长度并没有改变. 我们已经使用过了数组的length属性,length属性是一个可以读/写的属性,也就是说我们可以通过改变数组的length属性来 任意的改变数组的长度.如果将length设为小于数组长度的值,则原数组中索引大于length-1的值都会被删除.如果length 的值大于原始数组的长度,则在它们之间的值设为undefined. Js代码 对于数组的其他方法诸如join/reverse等等,在这就不再一一举例. 通过上面的解释,我们已经知道,对象的属性值是通过属性的名字(字符串类型)来获取,而数组的元素是通过索 引(整数型 0~~2**-1)来得到值.数组本身也是一个对象,所以对象属性的操作也完全适合于数组. Js代码 函数 javascript函数相信大家都写过不少了,所以我们这里只是简单介绍一下. 创建函数: 上面这两种形式都可以创建名为f()的函数,不过后一种形式可以创建匿名函数 函数定义时可以设置参数,如果传给函数的参数个数不够,则从最左边起依次对应,其余的用undefined赋值,如果传给函数 的参数多于函数定义参数的个数,则多出的参数被忽略. Js代码 因此,对于定义好的函数,我们不能指望调用者将所有的参数全部传进来.对于那些必须用到的参数应该在函数体中 加以检测(用!操作符),或者设置默认值然后同参数进行或(||)操作来取得参数. Js代码 函数的arguments属性 在每一个函数体的内部,都有一个arguments标识符,这个标识符代表了一个Arguments对象.Arguments对象非常类似 于Array(数组)对象,比如都有length属性,访问它的值用"[]"操作符利用索引来访问参数值,但是,二者是完全不同的 东西,仅仅是表面上有共同点而已(比如说修改Arguments对象的length属性并不会改变它的长度). Js代码 Js代码 Method--方法 方法就是函数.我们知道,每一个对象都包含0个或多个属性,属性可以是任意类型,当然也包括对象.函数本身就是一种 对象,因此我们完全可以把一个函数放到一个对象里面,此时,这个函数就成了对象的一个方法.此后如果要使用该方法, 则可以通过对象名利用"."操作符来实现. Js代码 方法的调用需要对象的支持,那么在方法中如何获取对象的属性呢?this!this关键字我们已经很熟悉了,在javascript的方 法中,我们可以用this来取得对方法调用者(对象)的引用,从而获取方法调用者的各种属性. Js代码 下面我们来一个更加面向对象的例子. Js代码 在上面的例子中,完全可以用person.name=..来直接改变person的name属性,在此我们只是为了展示一下刚才提到的内容. 另一种改变person属性的方法就是:定义一个function,接收两个参数,一个是person,一个是name的值,看起来像是这样: changeName(person,"newName").哪种方法好呢?很明显,例子中的方法更形象,更直观一些,而且好像有了那么一点面向 对象的影子. 再次强调一下,方法(Method)本身就是是函数(function),只不过方法的使用更受限制.在后面的篇幅中,如果提到函数,那么 提到的内容同样适用于方法,反之则不尽然. 函数的prototype属性 每一个函数都包含了一个prototype(原型)属性,这个属性构成了javascript面向对象的核心基础.在后面我们会详细讨论.

推荐整理分享[推荐]javascript 面向对象技术基础教程([推荐]抖音上那些好看的视频和有才的帐号),希望有所帮助,仅作参考,欢迎阅读内容。

[推荐]javascript 面向对象技术基础教程([推荐]抖音上那些好看的视频和有才的帐号)

文章相关热门搜索词:[推荐饭拍]100911 SMT in Shanghai,推荐java设计模式书籍推荐,[推荐下载],[推荐下载],推荐javascript教程,[推荐] 实现移动端到端加密的基础(一),[推荐] 实现移动端到端加密的基础(一),推荐java书籍,内容如对您有帮助,希望把文章链接给更多的朋友!

小型js框架veryide.librar源代码 /**CopyrightVeryIDE,-*

JavaScript RegExp方法获取地址栏参数(面向对象) Request={QueryString:function(item){varsvalue=location.search.match(newRegExp('[?&]'+item+'=([^&]*)(&?)','i'));returnsvalue?svalue[1]:svalue;}}varkey=Request.QueryString('key');Request.QueryString

JavaScript 面向对象入门精简篇第1/2页 封装:javascript中创建对象的模式中,个人认为通过闭包才算的上是真正意义上的封装,所以首先我们先来简单介绍一下闭包,看下面这个例子:scripttype

标签: [推荐]抖音上那些好看的视频和有才的帐号

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

上一篇:js继承 Base类的源码解析(js常用继承)

下一篇:小型js框架veryide.librar源代码(js 模板框架)

  • 核定征收的一般纳税人开专票怎么入账
  • 预收货款需要缴纳消费税吗?缴纳消费税的时间应该是?
  • 增值税电子普票没有电子章有效吗
  • 划拨土地使用权出租
  • 广告公司的税务
  • 合同不明确
  • 小规模免征增值税会计处理
  • 建筑业老项目如何界定
  • 高铁票进项抵扣怎么在增值税系统申报
  • 农产品抵扣计算题
  • 小企业会计准则和一般企业会计准则的区别
  • 保本销售量的计算公式用安全边际率
  • 预算控制方法主要包括
  • 会计学中营业利润的计算
  • 购买债券取得的利息收入计入什么科目
  • 汽车按揭费用收合法吗?
  • 高新技术企业研发费
  • 财政拨款申请格式怎么写
  • 个人缴纳失业保险的比例
  • 涉税软件技术维护费可以全额抵扣吗?
  • 清算所得计算例题
  • 维修属于劳务还是劳务
  • 公司买的食用油会计分录
  • 土地出让金产生的利息交契税吗
  • 资产置换会计处理办法
  • 工资一定要通过应付工资科目吗
  • 办公费差旅费属于
  • 什么叫电鳗鱼
  • win10系统怎么永久激活
  • php教程零基础入门
  • 包装物押金收入计入收入总额吗
  • 纳税调整项目有一个其他调增金额是怎么组成的
  • 有形动产租赁税收优惠
  • php time
  • 外购产品会计分录
  • 企业发生的直接用于产品生产,专门设有成本项目的费用
  • 资本金投资回报率
  • 人脸清晰化神器软件
  • 浅析是什么意思
  • 删除ont命令
  • 提取现金准备发放工资
  • 银行发行债券流程图
  • 从业人数啥意思
  • webservice api接口
  • phpcms模板制作教程
  • python中exec执行如何获取返回值
  • 社会团体费用报销制度
  • 劳务税能退税吗
  • 暂估管理费用跨年账务处理
  • 开具专票需要哪些材料
  • 存货抵债如何做分录
  • 从事国家重点扶持的公共基础项目
  • 借方是收入还是支出损益类
  • 建设项目开办费包括哪些
  • 销售佣金?
  • mysql中的limit用法有哪些(推荐)
  • 清空表内数据语句
  • ubuntuone
  • wwSecure.exe - wwSecure是什么进程
  • centos7手册
  • win8系统的运行在哪里打开
  • 日历功能在哪里设置
  • win7系统安装程序无法启动
  • win8.1系统如何升级到win11
  • Unity3D游戏开发基础
  • babel es6转es5原理
  • npm安装插件失败
  • Node.js中的construct构造函数
  • 脸部两旁的骨头
  • angularjs删除数组元素
  • shell脚本实现文件移动、复制等操作
  • unity协程会阻塞主线程吗
  • JavaScript定义变量
  • 简述javascript
  • [推荐]抖音上那些好看的视频和有才的帐号
  • jquery判断checkbox是否选中及改变checkbox状态的实现方法
  • android使用红杏代理更新sdk
  • 成都市个人房屋出租税费
  • 消费税的征收范围是如何规定的
  • 北京企业所得税汇算清缴时间
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设