javascript - 在对象声明中覆盖 toString 原型(prototype)

标签 javascript node.js

这里已经有一个关于覆盖 toString 的问题,答案是这样的:

function Foo() {}

Foo.prototype.toString = function()
{
    return "this is Foo";
}

但是我的问题是:

有没有办法像这样把这个原型(prototype)覆盖在对象声明的内部:

function Foo() {
    Foo.prototype.toString = function(){
        return "this is Foo";
    }
}

或者像这样:

var Foo =  {
Foo.prototype.toString = function(){
    return "this is Foo";
   }
}

将原型(prototype)放在对象声明之外真的很奇怪/烦人,但这也许是 JavaScript 的一个怪癖。我一直在想这个问题。

最佳答案

正如 Ted Hopp 提到的,目前还没有其他方法可以做到这一点。在 ECMAScript 6 中,您将能够使用 class 语法,它只是构造函数和原型(prototype)的语法糖:

class Foo {
  toString() { ... }
}

对于对象字面量,也会有简写:

var foo = {
  __proto__: {
    toString() {...}
  }
};

特殊的 __proto__ 声明允许您在对象字面量中定义原型(prototype)。然而,由于原型(prototype)只有在被多个对象共享时才真正有用,因此在这种情况下直接将属性分配给对象会更简单,而且现在已经可以工作了:

var foo = {
  toString: function() {},
};

关于javascript - 在对象声明中覆盖 toString 原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27613940/

相关文章:

javascript - 未捕获错误 : Reference. 推送失败:

javascript - 我如何搜索整个数组以找到它的键?

javascript - 将文本跨度到 div 的边缘(无空格)

node.js - npm run build on Windows 10 导致此应用程序无法在您的 PC 上运行

node.js - 对 hasMany 计数为空的模型进行后续查询

javascript - WebdriverIO - 将下拉元素收集到数组中

javascript - file.size 总是给出 20

javascript - 将参数传递给返回链中的 Promise 的函数

node.js - Node Webkit (nwjs) 的多个实例共享 cookie

javascript - 为什么 Facebook 登录不要求正确的权限?