Javascript如何实现扩充基本类型


Posted in Javascript onAugust 26, 2020

可以通过给Function.prototype增加方法来使得该方法对所有函数可用。

通过给Function.prototype增加一个method方法,下次给对象增加方法的时候就不必键入prototype这几个字符了。

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

一、JavaScript增加整数类型

JavaScript没有专门的整数类型,但有时候确实只需要提前数字中的整数部分。

可以给Number.prototype增加一个integer方法。

inter()方法根据数字的正负来判断是使用Math.ceiling还是Math.floor。

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

二、JavaScript缺少一个移除字符串首尾空白的方法

String.method('trim',function(){
  return this.replace(/^\s+|\s+$/g,'');
});

document.writeln(' " '+"  neat  ".trim() +' " ');//" neat "

基本类型的原型是公用结构,所以在类库混用时务必小心。一个保险的做法就是只在确定没有该方法时才添加它。

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

new前缀去调用一个函数

Function.method('new',function () {
  //创建一新对象,它继承自构造器函数的原型对象。
  var that=Object.create(this.prototype);
  //调用构造器函数,绑定-this-到新对象上。
  var other=this.apply(that,arguments);
  //如果它的返回值不是一个对象,就返回该对象。
  return (typeof other==='object'&&other)||that;
});

superior

Object.method('superior',function(name){ //传入方法名name
  var that=this,method=that[name]; 
  return function(){
    return method.apply(that,argumetns);
  }
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现兼容IE6与IE7的DIV高度
May 13 Javascript
js的逻辑运算符 ||
May 31 Javascript
通过正则格式化url查询字符串实现代码
Dec 28 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
Sep 27 Javascript
jQuery Easy UI中根据第一个下拉框选中的值设置第二个下拉框是否可以编辑
Nov 29 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
Dec 14 Javascript
AngularJS打开页面隐藏显示表达式用法示例
Dec 25 Javascript
js移动端图片压缩上传功能
Aug 18 Javascript
JavaScript的词法结构精华篇
Oct 17 Javascript
vue 插件的方法代码详解
Jun 06 Javascript
js验证账户名是否重复
May 26 Javascript
谈谈JavaScript中的垃圾回收机制
Sep 17 Javascript
Javascript var变量删除原理及实现
Aug 26 #Javascript
js实现车辆管理系统
Aug 26 #Javascript
js实现飞机大战小游戏
Aug 26 #Javascript
JS面向对象实现飞机大战
Aug 26 #Javascript
JavaScript Image对象实现原理实例解析
Aug 26 #Javascript
js实现飞机大战游戏
Aug 26 #Javascript
JS+Canvas实现五子棋游戏
Aug 26 #Javascript
You might like
PHP合并数组+与array_merge的区别分析
2010/08/01 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PDO::prepare讲解
2019/01/29 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
Python安装模块的常见问题及解决方法
2018/02/05 Python
python将每个单词按空格分开并保存到文件中
2018/03/19 Python
Python多进程原理与用法分析
2018/08/21 Python
Python多线程模块Threading用法示例小结
2019/11/09 Python
Python实现从N个数中找到最大的K个数
2020/04/02 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
2020/05/20 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
python selenium xpath定位操作
2020/09/01 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
十佳大学生村官事迹
2014/01/09 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
漫画「狩龙人拉格纳」公开TV动画预告图
2022/03/22 日漫