【发布时间】:2011-12-08 04:02:18
【问题描述】:
如果你在 javascript 中有一个对象的实例,似乎很难找到它的实际类型,即
var Point2D = function Point2D(x, y) {
return {
X: x,
Y: y
}
}
var p = new Point2D(1,1);
typeof p // yields just 'Object' not 'Point2D'
我发现的一种解决方法是让对象成为自己的原型,然后你可以通过调用prototype.constructor.name来有效地获取它的名字,
var Point2D = function Point2D(x, y) {
return {
X: x,
Y: y,
prototype: this
}
}
new Point2D(1,1).prototype.constructor.name // yields 'Point2D'
这是一种可行的方法吗(优点/缺点是什么?)还是我错过了更好的做法?
谢谢。
【问题讨论】:
-
Point2D(1,1).name 在 FF 或 chrome 中似乎不起作用。
-
它在 Chrome 中适用于我,但我不知道这是否是最好的方法。
-
它依赖于函数签名吗?即 var Point2d = function Point2D() { }?
-
@SeanThoman
Function.prototype.name不是标准的,因此在某些浏览器中将无法正确实现或根本无法实现。 -
看我的编辑,我想这就是你想要的。
标签: javascript types constructor typechecking