- 浏览: 35293 次
- 性别:
- 来自: 成都
最新评论
前一段看tom大叔的 <<深入理解JavaScript系列>> ,受益颇多。
在第20篇的结尾有6道题很有意思,花了好长时间做了只做出5道,
第6题看了 Gray Zhang 的答案 , 之前没见过toString和valueOf的用法。
题目:
- 找出数字数组中最大的元素(使用Match.max函数)
- 转化一个数字数组为function数组(每个function都弹出相应的数字)
- 给object数组进行排序(排序条件是每个元素对象的属性个数)
- 利用JavaScript打印出Fibonacci数(不使用全局变量)
- 实现如下语法的功能:var a = (5).plus(3).minus(6); //2
- 实现如下语法的功能:var a = add(2)(3)(4); //9
在看完<<js高级程序设计>>后,对几道题进行了重新作答
//Q1: var a = [1,2,3,4,5], big = a[0]; for(var i=1,l=a.length; i<l; ++i){//最简单的方法 big = big > Math.max(a[0],a[i]) ? big : Math.max(a[0],a[i]); } alert(big); //在ECMAScript v3之后的版本中的max函数已经支持2个以上的参数, //所以可以用下面的方法 var a = [1,2,3,4,5], ret; ret = Math.max.apply(null,a); //Q2: Array.prototype.toFunction = function(){ var _this =this; for(var i=0; i< this.length; ++i){ (function(i){ _this[i] = function(){ //闭包的应用 alert(i); } })(i); } } var a = [1,2,3,4,5,6]; a.toFunction(); a[0](); //方法2,避免在Array原型连上添加方法,修正错误。 function arrayToFunction(array){ for(var i=0, len = array.length; i< len; ++i){ (function(i){ //闭包的应用 var num = 0; num = array[i]; array[i] = function(){ alert(num); } })(i); } } var a = [1,2,3,4,5,6]; arrayToFunction(a); a[3](); //Q3: Array.prototype.mysort = function(){ var i=0,j,cout; for(;i<this.length;i++){ cout = 0; for ( var j in this[i]){ if( this[i].hasOwnProperty(j)) //排除继承过来的属性 cout++; } this[i].propertyNums = cout; } return this.sort(function(a,b){ return a.propertyNums - b.propertyNums; }); } var a = [{a:"name",b:"type"},{c:"hello",d:"123",e:function(){}}]; a.mysort(); //方法2,避免在Array原型连上添加方法 function objectSort(array){ var len = array.lenth, i, j, cout; for(i=0; i<len; ++i){ cout = 0; for ( var j in array[i]){ if( array[i].hasOwnProperty(j)) //排除继承过来的属性 cout++; } array[i].propertyNums = cout; } return array.sort(function(a,b){ return a.propertyNums - b.propertyNums; }); } var a = [{a:"name",b:"type"},{c:"hello",d:"123",e:function(){}}]; objectSort(a); //Q4: function fibonacii(n){ return n<2 ? 1 : arguments.callee(n-1) + arguments.callee(n-2); //return n<2 ? 1 : fibonacii(n-1) + fibonacii(n-2);//用arguments.callee代替函数名,降低耦合度 } function printFib(n){ var ret = []; if(typeof n === "number"){ for(var i=1; i<=n; i++){ ret.push(fibonacii(i)); } console.log(ret); } } printFib(5); //Q5: Number.prototype.plus = function(x){ if(typeof x === "number") return this + x; else return this; } Number.prototype.minus = function(x){ if(typeof x === "number") return this - x; else return this; } alert((2).plus(3).minus(3));//这题算是最简单的了 //Q6: //直接copy Gray zhang 的,算是学了一招吧 function add(x) { var result = x; var fn = function(x) { result += x; return fn; }; fn.toString = fn.valueOf = function() { return result; }; return fn; }
发表评论
-
ajax长轮询的实现
2012-09-09 22:44 5611今天一同学请帮忙, ... -
FireFox14的audio多重播放bug
2012-08-26 22:11 853今天在改写连连看的时候,在发现FF14中,如果audio设置为 ... -
解决FireFox的鼠标Event中没有offsetX,offsetY的办法
2012-08-26 17:08 2640之前制作了一个html版的连连看,最近改成html5版的,遇到 ... -
prototype、prototype.constructor、constructor.prototype的区别与联系
2012-08-03 11:43 1069在js中经常可以接触到prototype、prototype. ... -
图解javascript中的变量对象、闭包、作用域链机理
2012-07-23 17:58 1439javascript中的闭包是一个强大而灵活的 ... -
对javascript中的Variable Object的理解
2012-07-21 13:11 1128在ECMAScipt中,通过变量对象Variabl ... -
巧妙利用js特性进行方便的转换
2012-07-17 15:21 659最近看John Resig的 Pro JavaS ... -
jQueryUI autocomplete 插件的live绑定等问题
2012-06-04 15:31 2330最近做的一个项目用到了jQueryUI 的autoc ... -
2012年腾讯实习生面试经历(js)
2012-04-20 14:29 155真实记录2012年参加腾讯实习生招聘的过程,分享一 ... -
找某字符串的所有非空字串
2012-04-10 18:00 1098//题目:找出www.xx.com所有非空字串 var st ... -
十万以下阿拉伯数字转换为汉字--腾讯web前端笔试题
2012-04-05 17:08 2306问题:实现函数readInt(Number num) ,如输 ... -
腾讯web前端笔试题
2012-04-05 10:22 2438题目:有<a id='qq' href='http:// ... -
前端开发中的各种width,height
2012-02-16 17:39 1070var s = ""; s += &qu ... -
javascript 中this的理解
2011-12-30 11:39 801var test = "window's test& ...
相关推荐
38 -设备部经理绩效考核表1
在做了充分的需求分析之后,将一站式电脑配件交易平台的需求分为商品管理、订单管理、配送管理、组装管理和评论管理等多个子模块,随后对系统进行设计,设计主要从系统整体架构和数据库两方面进行分析和设计,系统的核心功能主要包括商品管理、订单管理、配送管理、组装管理和评论管理,而非核心功能主要包含了用户管理和用户登录管理等模块。而后,对系统进行了编码并实现了所有功能,最后,对系统相关功能展开测试,并通过了系统测试,充分验证了系统可用性。
数据名称:2000-2022年各县市区主要社会经济发展指标面板数据 数据类型:dta格式 数据来源:中国县域统计
内容概要:本文提供了针对大学生英语竞赛写作准备的重要资源——一系列通用的英文句子模板。这些模板涵盖了现代经济社会的各种话题,从科技进步到环境保护,以及个人品质和社会责任等,并且适用于论述类文章、观点对比和个人见解的表达。文章通过对每一句话的应用环境解释和语法提示,确保使用者可以在实际写作中正确且有效地应用这些表达方式。 适合人群:正在准备参加大学生英语竞赛的学生及其他希望提高书面表达能力的学习者。 使用场景及目标:考生能够在竞赛时间内迅速构建思路完整的文章,增强语言表达的流利性和规范性;帮助学习者积累高级词汇,提升英语写作水平并培养良好的思维逻辑。 阅读建议:结合历年优秀范文进行深入学习,熟悉不同类型话题下的表述方法;练习将提供的句子融入自身创作的文章中,通过不断修订和完善来巩固记忆。同时也可以用于日常的英语写作训练当中。
本代码参考网络大神代码以及结合自身理解,编写的关于使用STM32F103C8T6芯片,通过ESP8266模块,连接阿里云物联网平台的代码历程,文件内包含了如何修改代码连接自己的设备的教程(readme.txt)文件,请读者仔细阅读。
宽带折叠传输阵天线.pdf
这是一个exe程序,解压后可以批量将Word文件转为PDF文件。
09 -单证部经理绩效考核表1
2009-2022年农村金融发展水平省级面板数据 31省份金融发展水平数据(不含港澳台地区) 涉农贷款金额亿元/第一产业增加值 30省份第一产业产值(2009-2022年) 30省份农业金融发展水平(2009-2022年)
2022年9月全国大学生英语竞赛A类初赛参考答案
Python源码03之解决对图片格式进行批量转换的问题.zip
病毒
基于向量特征的车辆轨迹预测.pdf
10-15-物控人员绩效考核表(自动计算、等级评价、任意设置)
员工末位淘汰考评表
1、操作简单,导入(待分班的数据xlsx格式),分班、导出三步。 2、分班条件设置:可选科类组合,设置起始班级和学生预设班级。 3、分班结果:班级人数均衡、男女均衡,各科成绩和总分班级均衡,最大分差不超过0.5分。 4、导出xlsx格式的分班结果。含各班单独的工作表和统计数据表。
人事档案登记及查询系统
第3课《安塞腰鼓》课件-语文八年级下册
C语言之考勤模拟系统平台(千行代码)
物流经理主管绩效考核表