这里已经有一个关于覆盖 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/