美文网首页
扩充类型的功能

扩充类型的功能

作者: 李幸娟 | 来源:发表于2020-03-06 18:17 被阅读0次

    扩充类型的功能

    Javascript允许给语言的基本类型扩充功能。我们把方法加在基本类型的prototype上,使得该方法对所有对象可用。这种方式对函数、数组、字符串、数字、正则表达式和布尔值同样适用。

    下面我们以以函数为例,通过给Function.prototype增加方法来使得该方法对所有函数可用:

    这个方法用于提取数字的整数部分

    Number.prototype.integer = function() {
      console.log(this);
      return Math[this < 0 ? "ceil" : "floor"](this);
    };
    console.log((10 / 3).integer());  // 3
    

    我们也可以像下面这样, 写一个通用的方法,就不需要每次都打 .prototype...

    Function.prototype.method = function(name, func) {
      this.prototype[name] = func;
      return this;
    };
    
    Number.method("integer", function() {
      return Math[this < 0 ? "ceil" : "floor"](this);
    });
    (-10 / 3).integer();  // -3
    

    通过给基本类型增加方法,可以极大的提高语言的表现力。因为JavaScript原型继承的动态本质,新的方法立刻被赋予到所有的对象实例上, 哪怕对象实例是在方法被增加之前就已经创建好了

    由于基本类型的原型是公用结构, 所以在类库混用的要先判断该方法是否存在, 以免覆盖

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

    参考

    • [《JavaScript语言精粹-第四章-扩充基本类型的功能》]

    相关文章

      网友评论

          本文标题:扩充类型的功能

          本文链接:https://www.haomeiwen.com/subject/htawrhtx.html