类的扩展


JavaScript 中基于原型的继承机制是动态的:对象从其原型继承属性,如果创建对象之后原型的属性发生变化,也会影响到继承这个原型的所有实例对象。这意味着我们可以通过给原型对象添加方法来扩展 JavaScript 类。下面我们通过给 Complex 类添加方法来实现共轭复数:

除了自定义的类对象之外,JavaScript 内置类的原型对象也支持上述方式进行扩展,比如数字、字符串、数组、函数等数据类型:

// 多次调用某个函数
Number.prototype.times = function (f, context) {
  var n = Number(this);
  for (var i = 0; i < n; i++) 
    f.call(context, i);
};

// 去除字符串开头和结尾的空格
String.prototype.trim = String.prototype.trim || function () {
  if (!this)
    return this;
  return this.replace(/^\s+|\s+$/g, "");  // 使用正则表达式执行空格替换
};

// 返回函数的名字
Function.prototype.getName = function () {
  return this.name || this.toString().match(/function\s*([^()*])\(/)[1];
};

下面测试下上述扩展方法的调用:

对于对象而言,不推荐给 Object.prototype 添加方法来对其进行扩展。后面我们会定义一个 Object.defineProperty() 方法安全地扩展 Object.prototype


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: 在 JavaScript 中实现 Java 式的类继承

>> 下一篇: 类和类型