JavaScript允许为语言的基本数据类型定义方法.通过Object.prototype添加原型方法,该方法可被所有的对象,.这样的方法对函数,数组,字符串,数字,正则表达式和布尔值都适用.例如,通过Function.prototype增加方法,使该方法对所有函数可用

Function.prototype.method=function(name,func){
this.prototype[name] = func
return this
}

  为Function.prototype增加一个method方法之后,就不必使用prototype这个属性了,然后调用method方法直接为各种基本类型添加方法

  JavaScript并没有单独的整数类型,因此有时候只提取数字中的整数部分是必要的.JavaScript本身提供的取整方法有些不太好,下面通过为Number.prototype添加一个integer方法来改善它.

Number.method('integer',function(){
return Math[this<0?'ceil':'floor'](this)
})
console.log((-10/3).integer()); //-3

  Number.method方法能够根据数字的正负来判断是使用Math.ceiling还是Math.floors,这样就避免了每次都编写上面的代码

  通过为基本类型扩展方法,可以大大提高语言的表现力.由于JavaScript原型继承的本质,,因此,所有原型方法立刻被赋予到所有实例,即使该实例在原型方法创建之前就创建好了.

注意:基本类型的原型是公共结构,在扩展基类时务必小心,避免覆盖基类的原生方法.一个稳妥的做法是在确定有没有该方法时才添加.例如:

Function.prototype.method = function(name,func){
if(!this.prototype[name]){
this.prototype[name] = func;
return this;
}
}

建议20:建议通过Function扩展类型的更多相关文章

  1. 编写高质量代码:改善Java程序的151个建议(第二章:基本类型)

    编写高质量代码:改善Java程序的151个建议(第二章:基本类型) 目录 建议21:用偶判断,不用奇判断 建议22:用整数类型处理货币 建议23:不要让类型默默转换 建议24:边界还是边界 建议25: ...

  2. 编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合

    建议20:使用泛型集合代替非泛型集合 在建议1中我们知道,如果要让代码高效运行,应该尽量避免装箱和拆箱,以及尽量减少转型.很遗憾,在微软提供给我们的第一代集合类型中没有做到这一点,下面我们看Array ...

  3. 编写高质量代码改善C#程序的157个建议——建议137:委托和事件类型应添加上级后缀

    建议137:委托和事件类型应添加上级后缀 委托类型本身是一个类,考虑让派生类的名字以基类名字作为后缀.事件类型是一类特殊的委托,所以事件类型也遵循本建议. 委托和事件的正确的命名方式有: public ...

  4. 编写高质量代码改善C#程序的157个建议——建议8: 避免给枚举类型的元素提供显式的值

    建议8: 避免给枚举类型的元素提供显式的值 一般情况下,没有必要给枚举类型的元素提供显式的值.创建枚举的理由之一,就是为了代替使用实际的数值.不正确地为枚举类型的元素设定显式的值,会带来意想不到的错误 ...

  5. 读改善c#代码157个建议:建议7~9

    目录: 建议7:将0值作为枚举的默认值 建议8:避免给枚举类型的元素提供显示的值 建议9:习惯运算符重载 一.建议7:将0值作为枚举的默认值 允许使用的枚举类型有:byte.sbyte.short.u ...

  6. MIME(多用途互联网邮件扩展类型)

    MIME对照表 百度百科 MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.(百度百科).是设定某种扩展名的文件用一种应用程序来打开的方式 ...

  7. 使用扩展方法(this 扩展类型)

    namespace ConsoleApp_UseExtendWays{ class Program { static void Main(string[] args) { Student s = ne ...

  8. 杂项:MIME(多用途互联网邮件扩展类型)百科

    ylbtech-杂项:MIME(多用途互联网邮件扩展类型)百科 MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用 ...

  9. PHP 的扩展类型及安装方式

    扩展类型 底层扩展(基于C语言): PECL 上层扩展(基于PHP 语言): PEAR Composer PECL # 查找扩展 $ pecl search extname # 安装扩展 $ pecl ...

随机推荐

  1. python djangjo 文件上传

    视图: request.GET 获取数据 request.POST   提交数据 request.FILES  获取文件用 checkbox 等多选的内容   request.POST.getlist ...

  2. 对Java tutorial-examples中hello2核心代码分析

    1.在hello2中有两个.java源文件分别是GreetingServlet.Java和ResponseServlet.jva文件主要对以下核心代码做主要分析. String username = ...

  3. Springboot整合Dubbo和Zookeeper

    Dubbo是一款由阿里巴巴开发的远程服务调用框架(RPC),其可以透明化的调用远程服务,就像调用本地服务一样简单.截至目前,Dubbo发布了基于Spring Boot构建的版本,版本号为0.2.0,这 ...

  4. 部署描述符web.xml

    部署描述符应用场景 需要传递初始参数给ServletContext 有多个过滤器,并要指定调用顺序 需要更改会话超时设置 要限制资源的访问,并配置用户身份验证方式 xsi:schemaLocation ...

  5. 如何使用隐式转换扩展DataFrame和RDD以及其他的对象

    目的 DataFrame可以点出来很多方法,都是DF内置的. 比如说:df.withColumn(),df.printSchema(). 但是如果你想打印df中的分区位置信息,以及每个key有多少记录 ...

  6. 烧光百亿的共享单车行业,ofo和摩拜到底该不该合并?

    共享经济领域可谓一地鸡毛,除了众多不靠谱的跟风项目外--共享马扎."老公寄存屋",更多的是不绝于耳的倒闭消息.尤其是在共享单车行业,暂且不提那些体量小的项目,单单是倒闭的大型共享单 ...

  7. Shopee招聘-测试开发leader(30k-60k/月)

    内推邮箱:tim.zhao@shopee.com 地点:深圳 1.测试Leader (30k-60k/月) 岗位职责 负责根据项目计划制订测试计划和规划,保证项目质量和进度: 负责与产品经理和开发人员 ...

  8. 「NOIP 2017」列队

    题目大意:给定一个 $n times m$ 的方阵,初始时第 $i$ 行第 $j$ 列的人的编号为 $(i-1) times m + j$,$q$ 次给出 $x,y$,让第 $x$ 行 $y$ 列的人 ...

  9. React Native Build Apk

    1 React Native安卓项目打包APK 1.1 产生签名的key 先通过keytool生成key 1 keytool -genkey -v -keystore demo-release-key ...

  10. 解决getImageData跨域问题

    在项目开发过程中要用到html5增加的getImageData方法来实现刮刮卡的效果,后台上传图片,手机端用手刮.在本地开发没遇到问题,上线之后发现刮不了,提示"Uncaught Secur ...