位置: 编程技术 - 正文

javascript中的对象和数组的应用技巧(javascript中的对象用于)

编辑:rootadmin
javascript已经用了有三年多了,但是对一些细节的东西还是一知半解,比如对象和数组,一直都在用一些最基本的操作。这是我学习的一个坏习惯--懒,很多东西都是了解而已,看到稍微复杂点的逻辑就没有耐心。就像学asp时不知道asp跟脚本的关系,学html不知道什么是DOM...结果是学得慢且不扎实,碰到稍复杂的问题就歇菜(扯远了)。 今天继续优化脚本,尝试着合并一些数组时碰到问题,才算去仔细看了手册,做了一些测试。 javascript1.2之后允许使用[]创建数组: var firstArray = []; var secondArray = ["red", "green", "blue"]; var thirdArray = [,,,,]; 可以在数组创建后添加元素: secondArray[4] = ; 这样的结果是第4个元素和第2个元素之间有1个空元素。 结果类似这样:["red", "green", "blue",,] 需要注意的是,数组必须初始化,我测试了数组作为数组元素的定义: var arrArray = [[]]; 本来设想实现二维数组,结果是使用arrArray[i][0]当i>0时无效! 仔细看一下才明白,其实是定义了arrArray[0]为一个空数组,而其他元素都未定义,相当于 var arrArray=[]; arrArray[0]=[]; 所以arrArray[1]没有定义,所以如果将它作为数组进行操作会出错。 删除一个数组元素:delete var myColors = ["red", "green", "blue"]; delete myColors[1]; alert("The value of myColors[1] is: " + myColors[1]); delete的结果是myColors[1]=undefined,但是myColors.length不变,myColors变成这样:["red",, "blue"] 替换或绝对删除数组元素用slice(): var myArray = [1, 2, 3, 4, 5]; myArray.slice(2); // returns [3, 4, 5] myArray.slice(1, 3); // returns [2, 3] myArray.slice(-3); // returns [3, 4, 5] myArray.slice(-3, -1); // returns [3, 4] myArray.slice(-4, 3); // returns [2, 3] myArray.slice(3, 1); // returns [] var myArray = [1, 2, 3, 4, 5]; myArray.splice(3,2,''a'',''b''); // returns 4,5 [1,2,3,''a'',''b''] myArray.splice(1,1,"in","the","middle"); // returns 2 [1,"in","the","middle",3,''a'',''b''] 看了文档才知道,数组是传递引用的! var x = [, 9, 8]; var y = x; x[0] = 2; alert("The value of y's first element is: " + y[0]); 你猜结果是多少呢? 再看这个: // Declare a reference type (array) var refType = ["first ", " second", " third"]; // Declare a primitive type (number) var primType = ; // Declare a function taking two arguments, which it will modify function modifyValues(ref, prim) { ref[0] = "changed"; // modify the first argument, an array prim = prim - 8; // modify the second, a number } // Invoke the function modifyValues(refType, primType); // Print the value of the reference type document.writeln("The value of refType is: ", refType+"< >"); // Print the value of the primitive type document.writeln("The value of primType is: ", primType); 测试时发现一个问题: var arr=[]; arr['a']=1; arr['b']=2; alert(arr.length); 弹出的数字是0! 看了文档后知道,这样的数组叫做联合数组(Associative Arrays),arr['a']等同于arr.a,arr.length也就等同于arr['length'],而arr.length在我们初始化arr(var arr=[];)的时候自动赋值为0。 有人把这种联合数组叫做javascript的hash table。严格上讲,联合数组和普通数组本身都是对象(废话,javascript中的一切都是对象- -),意义和用法都是相同的。看下面的例子: var arr=[]; arr=[1,2,3]; arr.test='test'; alert(arr); alert(arr[1]); alert(arr['test']); var arr={}; arr=[2,3,4]; alert(arr[0]); var arr={};和var arr=[]都可以写成var arr=function(){}; 从上面的代码可以看出,下标数组跟联合数组分别独立,下标只作用于下标数组,不能访问联合数组,相应的,联合数组不对length属性产生影响。联合数组的标签就是属性,但是下标数组的下标并不是属性,arr[0]!=arr.0,访问arr.0会出错。 在某些时候,用arr['a']代替arr.a作为方法调用会更有效,因为arr['a']中的'a'可以用变量传入,比如将方法赋给变量: var d=document,l=links; 这时候用直接d.l就会出错,而用d[l]就可以正确执行,alert一下就知道了:) alert(d.l);//脚本错误 alert(d[l]);//显示object 既然数组是由lenght属性的对象,那么是不是所有具有length属性的对象都是数组呢?比如String。测试之后发现,firefox是可以把String当作数组处理的,但是ie不行: var myString = "Hello world"; alert(myString.length); alert(myString[0]); 数组的对象应该比较独特,用户对象不能完全模拟: function myarray(size){ this.length=size; var x=0; } var arr=new myarray(5); arr[9]=1; alert(arr); alert(arr[9]); alert(arr.length); 本以为Array的length属性就是普通的对象属性,结果经过上面的例子发现,arr的length不再是数组length,arr的结构也不是普通数组结构。 定义一个函数/类的方法有好几种: function fName(arguments){ //function body }; var fName = function(arguments){ //function body } var fName = new Function("arguments","/*function body*/"); 第三种方法比较好玩,看下面的例子: var arr=new Function("var total=0; for (var i=0; i 用这个方法可以解析ajax返回的JSON,这样就不用低效的eval了(没有测试是否比eval快): 假设{b:{c:2}}为返回的json字符串: var arr=new Function("this.a={b:{c:2}};"); var aa =new arr(); alert(aa.a.b.c);

推荐整理分享javascript中的对象和数组的应用技巧(javascript中的对象用于),希望有所帮助,仅作参考,欢迎阅读内容。

javascript中的对象和数组的应用技巧(javascript中的对象用于)

文章相关热门搜索词:javascript中的对象用于在单个的变量中存储多个值,JavaScript中的对象,javascript的对象,javascript中的对象用于,javascript中的对象由哪两个基本元素构成,javascript中的对象类型,JavaScript中的对象,javascript中的对象由哪两个基本元素构成,内容如对您有帮助,希望把文章链接给更多的朋友!

Javascript标准DOM Range操作全集第1/3页 2级DOM定义了一个createRange()方法,如果是按照DOM此标准的浏览器(IE并不是支持此标准的,但是IE里的属性或方法却远比标准中定义的多得多),它属于do

尽可能写"友好"的"Javascript"代码 在SearchEngine的robot搜索时,针对的type,text/html此类文本的友好度是最高的(现阶段text/xml除外),而text/javascript此类的友好度不理想,如果robot还要判断D

兼容Mozilla必须知道的知识。 我想我也该把这个东西先拿出来了。希望可以帮助大家,我也是想到了哪些就写哪些,如果有遗漏的地方,还请指出,我会加上去的。列表了多种IE与M

标签: javascript中的对象用于

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

上一篇:Javascript中的数学函数(javascript中的数据类型分为两大类)

下一篇:Javascript标准DOM Range操作全集第1/3页(js dom操作方法)

  • 只拿了营业执照十年无办税好注销吗
  • 北京市增值税发票
  • 未达起征点增值税申报表怎么填
  • 应付账款支付时需要付款申请单吗
  • 广告公司 印刷
  • 坏账准备计入营业收入如何报年报
  • 退回以前年度的增值税账务处理
  • 一般纳税人利润100万要交多少税
  • 个税属于会计中的什么科目
  • 固定资产折旧费是产品成本的组成
  • 通用机打发票怎么红冲
  • 减免增值税申报表
  • 可供出售金融资产会计处理
  • 折旧已经计提完的固定资产如何盘点
  • 企业所得税收入是什么意思
  • 结算金额大于合同金额
  • 投资公司的投资人叫什么
  • 税控服务费的账务处理
  • 计提税金与缴纳有差额
  • 抵扣勾选和退税勾选选错了怎么办
  • 防伪税控维护费会计分录
  • 贷款利息税前扣除比例
  • 去国税申请开票需要法人和财务去吗?
  • 房屋租赁交税能补交吗
  • 在产品,产成品和库存商品的区别
  • 降低房租
  • 增值税如何确认
  • 增值税扣税凭证抵减销项税额
  • 单位给员工发工资要交税吗
  • 股权转让印花税税率是多少
  • 企业专项储备属于什么科目
  • 支付装修押金会退吗
  • 国家基建项目规划
  • windows无法连接到打印机指定的网络名不再可用
  • 主营业务收入平均增长率计算例题
  • 海关进口增值税专用缴款书
  • macbook 运行windows
  • 代开房租的税点计入什么科目?
  • 公司注册资金存在风险吗
  • 汇算清缴中企业基础信息表
  • PHP:proc_get_status()的用法_命令行函数
  • vue 右键菜单
  • 好用的5款国产手机推荐
  • 漫天花雨异闻
  • 机器学习实战练手项目
  • 【历史上的今天】3 月 23 日:网景创始人出生;FORMAC 语言的开发者诞生;PRMan 非商业版发布
  • php设置header参数
  • 公司向股东个人借款的会计分录
  • apache druid使用
  • 个人电子发票怎么查询
  • 委托收款的含义
  • 计提工会经费是什么工资项目
  • 电子发票与纸质发票具有不同的法律效力
  • 私车公用的汽油费计入哪个科目
  • 计提的坏账准备计入什么科目
  • 含税销售收入会计分录
  • 取得其他权益工具投资发生的交易费用
  • 核算税金怎么核算
  • 个人向对公账户付款有风险吗
  • 职工体检可以从工会经费支出
  • 自产自销的茶叶公司怎么做账
  • 月末库存商品的成本怎么算
  • 会计当期损益指什么
  • 建总账的注意事项
  • freebsd的软件多吗
  • win8出现蓝屏怎么修复
  • 怎样关闭windows10安全中心
  • win7系统无法查看共享电脑
  • win7无法识别usb设备怎么办 五大方法来解决
  • macbook core2
  • windows中创建的任务计划可以多久执行一次任务?
  • 两个js文件互相取变量
  • typescript的type
  • node js官网
  • 编写js代码要注意什么
  • 通过jquery实现页面的动画效果(实例代码)
  • javascript例题
  • 大气污染物环保税计算
  • 中国地税国税
  • 2018年税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设