【问题标题】:Javascript debugger tip. Show a name for a value other than "Object"Javascript 调试器提示。显示“对象”以外的值的名称
【发布时间】:2011-07-31 08:40:25
【问题描述】:

我想将以下想法用于 Javascript 中的类系统。

var base = Object.create(
  Object.prototype,
  {
    extend: {
      value: function extend (properties) {
        var child = Object.create(this);
        for (var p in properties) {
          child[p] = properties[p];
        }
        return child;
      }
    },
    make: {
      value: function make () {
        var child = Object.create(this);
        if (child.init) child.init();
        return child;
      }
    }
});

var animal = base.extend();

var cat = animal.extend(
  {
    init: function init () {
      this.lives = 9;
    }
  }
);

var ares = cat.make();

但是 firebug 和 chromium 中的调试器和控制台将每个实例都称为对象。这很烦人。我该如何解决这个问题?

【问题讨论】:

  • 嗯,那是因为,惊喜!JavaScript 中的一切都是对象。 JavaScript 没有“类”的概念。它只有一个可以修改的原型链。您只能使用“instanceof”运算符来模拟 具有基于类的系统。大多数实现将类名和基类名等作为原型变量。
  • 如果您还没有发现它,Firebug 应该会为您提供可点击的文本,如果您调用 console.log(myObject);,它将在 DOM 选项卡中打开,以便您探索对象属性
  • Javascript 可能没有“类”的概念,但我的调试器有。他们用他们的原生构造函数来标记对象,看起来,这有点随意。我认为这可能是可配置的。

标签: javascript google-chrome firebug chromium


【解决方案1】:

您正在创建和扩展实例——不是,但您也可以创建自己的

function Cat() {
};

console.log(Cat); //output: function Cat() {...}
console.log(new Cat()); // output: Cat

console.log(Object); // output: function Object() {...}
console.log(new Object()); // output: Object

【讨论】:

    猜你喜欢
    • 2015-09-14
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多