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 相关文章推荐
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
Nov 25 Javascript
confirm的用法示例用于按钮操作时确定是否执行
Jun 19 Javascript
AngularJS中的模块详解
Jan 29 Javascript
浅谈Javascript数组的使用
Jul 29 Javascript
jQuery实现hover合成事件的方法
Aug 06 Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
Oct 31 Javascript
使用JSON格式提交数据到服务端的实例代码
Apr 01 Javascript
element-ui中的select下拉列表设置默认值方法
Aug 24 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
Apr 11 Javascript
VueQuillEditor富文本上传图片(非base64)
Jun 03 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
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 addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
Yii2框架类自动加载机制实例分析
2018/05/02 PHP
js动态生成指定行数的表格
2013/07/11 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
js 获取元素所有兄弟节点的实现方法
2016/09/06 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
Angular4开发解决跨域问题详解
2017/08/28 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
跟老齐学Python之一个免费的实验室
2014/09/14 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
python中的随机函数小结
2018/01/27 Python
python smtplib模块实现发送邮件带附件sendmail
2018/05/22 Python
深入浅析Python的类
2018/06/22 Python
python Kmeans算法原理深入解析
2019/08/23 Python
在python3中实现更新界面
2020/02/21 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
高一地理教学反思
2014/01/18 职场文书
语文教学感言
2014/02/06 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
毕业生应聘求职信
2014/07/10 职场文书
婚前协议书范本
2014/10/27 职场文书
土地租赁协议书
2015/01/29 职场文书
调任通知
2015/04/21 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
Nebula Graph解决风控业务实践
2022/03/31 MySQL
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis