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 相关文章推荐
使用Modello编写JavaScript类
Dec 22 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
Mar 05 Javascript
加载jQuery后$冲突的解决办法
Jul 09 Javascript
用js实现小球的自由移动代码
Apr 22 Javascript
JavaScript中获取鼠标位置相关属性总结
Oct 11 Javascript
js内置对象处理_打印学生成绩单的简单实现
Sep 24 Javascript
VueJS全面解析
Nov 10 Javascript
jQuery时间日期三级联动(推荐)
Nov 27 Javascript
老生常谈jquery id选择器和class选择器的区别
Feb 12 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
JSX在render函数中的应用详解
Sep 04 Javascript
让Vue响应Map或Set的变化操作
Nov 11 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
js constructor的实际作用分析
2011/11/15 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
Javascript实现可旋转的圆圈实例代码
2015/08/04 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
2015/09/02 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
js实现瀑布流的三种方式比较
2020/06/28 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
servlet+jquery实现文件上传进度条示例代码
2017/01/25 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
微信小程序云开发实现数据添加、查询和分页
2019/05/17 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
python 中xpath爬虫实例详解
2019/08/26 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
一道SQL面试题
2012/12/31 面试题
讲座新闻稿
2015/07/18 职场文书
感恩父母主题班会
2015/08/12 职场文书
python基础之爬虫入门
2021/05/10 Python
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL
java设计模式--七大原则详解
2021/07/21 Java/Android