扩展JavaScript的时候,千万要保留其原来的所有功能,因为不知道别人的代码是否会用到这些。而且一般来说,为了写出兼容更多JS框架的代码,最保险的方法就是用JS的原生功能。然而……
在这个问题上,这次ASP.NET AJAX RC栽跟头了。
不知道大家有没有看过ASP.NET AJAX Library RC对于JavaScript的扩展?在RC的扩展中增加了这么一些代码:
Date._jsParse = Date.parse;
...Date.parse = function Date$parse(value, formats) {
...
}
上面的代码将Date.parse的原生实 现改成了Date._jsParse函数,而自己重新定义了一个Date.parse方法。这样做的话,把Number、Date、Boolean对象都 提供了比较统一的parse功能,并且能够支持各种Format并具有本地化功能,着实是不错的扩展。可惜就是因为改了JavaScript的原生功能, 让Google Ads这个被广泛运用的……玩意儿,就这么Break了。
这个问题可是直接涉及到广大人民群众的切身利益,严重影响了人民群众的感情。比如在ASP.NET AJAX论坛,就在抱怨这件事情([url]http://forums.asp.net/thread/1499508.aspx[/url]),不过有问题自然就有人会解决,例如Cyril(一看到这张脸就觉得眼熟,原来我当时的《另一种Atlas Scripts Intellisense的方法以及对比与分析》就是引用了他Blog上的方法)提出了一种解决方案:
Date.__cyril_parse = Date.parse; Date.parse = function(s){try {return Date.__cyril_parse(s);
} catch (e){var d = Date._jsParse(s);if (d) {return d;
} else {throw e;
}
}
}
只要引入上面这段代码即可。这是很容易想到 的做法,不过还真的没有比这更简单或更有效的解决方案了:把ASP.NET AJAX的Date.parse扩展再另存起来,再重新写一个Date.parse方法,首先尝试ASP.NET AJAX的扩展,如果失败(幸好如果用户按照原来的使用方式会造成失败),则调用JavaScript的原有功能。问题就这么被解决了,不是吗?
这次ASP.NET AJAX RC的错误很低级,还好只是RC,有问题还不怕。不过,这也不就是RC Release的目的吗?至少现在基本上可以肯定,ASP.NET AJAX正式版里的扩展不会再有这个错误了。
本文转自 jeffz 51CTO博客,原文链接:http://blog.51cto.com/jeffz/60374,如需转载请自行联系原作者

扩展JavaScript的时候,千万要保留其原来的所有功能相关推荐

  1. 高并发其实挺容易的,当你明白了一万并发的原理,然后扩展到百万、千万、亿万级很easy

    来自知乎的一个大神的回答:https://zhuanlan.zhihu.com/p/38636111 高并发其实挺容易的,当你明白了一万并发的原理,然后扩展到百万.千万.亿万级很easy 要点有如下几 ...

  2. javascript编写_如何在JavaScript中使用解构来编写更简洁,功能更强大的代码

    javascript编写 by Ashay Mandwarya ?️?? 由Ashay Mandwarya提供吗? 如何在JavaScript中使用解构来编写更简洁,功能更强大的代码 (How to ...

  3. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

  4. 封装vue导出excel组件(扩展嵌入图片、操作工作表、表格样式等功能)

    导出的excel中嵌入图片,同时还需要操作多个工作表与表格样式, 看了一些java的插件不太适合,因为我这边的需求是动态表单,字段不固定.后端的插件大部分依赖实体类注解,要不就是操作比较繁琐.又看了一 ...

  5. 扩展JavaScript数组(Array)添加删除元素方法

    为JavaScript数组(Array)扩展 添加删除元素方法 作者:jcLee95:https://blog.csdn.net/qq_28550263?spm=1001.2101.3001.5343 ...

  6. JavaScript如何实现小数点后保留2位数

    如果想要四舍五入浮点数,只保留小数点后2位数,这要如何实现?下面本篇文章就来给大家介绍一下JavaScript实现小数点后保留2位数的方法,希望对大家有所帮助. 我们可以使用toFixed() 方法来 ...

  7. javascript 【小数转百分数 保留两位小数】

    项目中遇到小数(一个人脸的相似度值,业务给过来是小数)需要web界面以百分数的形式表示,并且保留两位小数. 直接上代码. var nval = 0.12345; var percent = (Math ...

  8. 利用策略模式与装饰模式扩展JavaScript表单验证功能

    tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و [本文源址:http://blog.csdn.net/q1056843325/article/details/55097262 ...

  9. 扩展GridView控件——为内容项添加拖放及分组功能

    引言 相信大家对GridView都不陌生,是非常有用的控件,用于平铺有序的显示多个内容项.打开任何WinRT应用或者是微软合作商的网站,都会在APP中发现GridView的使用."Tiles ...

最新文章

  1. 16 分频 32 分频是啥意思_Verilog中任意分频的实现
  2. Microbiome:生态中心张丽梅组-植物发育时期驱动玉米微生物组生态角色的分化...
  3. python入门需要多久-怎么自学python,大概要多久?
  4. 时频分析:短时傅里叶变换应用
  5. JVM-Ubuntu18.04.1下编译OpenJDK8
  6. C# 8 - Range 和 Index(范围和索引)
  7. jsp中为什么在跳转500页面的时候 图片加载不出来
  8. 【HDU - 5873】Football Games(兰道定理,知识点总结)
  9. 威纶触摸屏与电脑连接_PLC与这7种设备的连接方式,一看就懂!
  10. 项目中遇到的所有ECharts图表集合
  11. Dropout 理论基础与实战细节
  12. 蓝桥杯2015年第六届C/C++省赛B组第七题-牌型种数
  13. gcc和vc的两点区别
  14. 3点画矩形的lisp_AutoCAD LISP矩形窗格绘制
  15. 如何才能不改变图片的像素大小,只改变图片的文件大小
  16. 在阿里云ECS上搭建Skynet服务器与Unity通信
  17. 西瓜书第一第二章理解
  18. 梦兴阁分析:信息流还有多久的红利期
  19. 在移动前端上避免使用100vh单位
  20. 更改安卓系统开机画面

热门文章

  1. 微型计算机三包法第30条内容,我不同意国家对电视机三包有明确规定,还是检测手段有问题。保修内容明确维护好消费者的权益。- 法律快车法律咨询...
  2. php7做了哪些优化,PHP语言学习之PHP7做了哪些优化
  3. 分布式信息采集服务器,Plumber分布式数据采集系统(一)架构与监控心跳
  4. 浅谈JavaScript中按键事件的e.keyCode || e.which || e.charCode
  5. 屏幕按压力度android,android手机 N 所支持的压感技术
  6. div地址跳转 vue_vue---导航栏点击跳转到对应位置
  7. python二手房课程设计_【Python】赶集网二手房爬虫 (可扩展)
  8. mysql中鼠标光标消失了_为什么我这里没有显示鼠标的悬停可改变页面颜色,以为什么我加载了mysql的jar文件还是不能显示报表的内容呢?...
  9. java迭代器的使用场景_集合遍历利器 -- 迭代器模式 介绍 使用场景案例 优缺点及程序演示...
  10. java 生成 防伪码,优秀的生成防伪码的代码应该如何写?百万千万量级别的。