获取原型函数下的对象类型

时间:2011-10-17 15:16:27

标签: javascript object typeof prototype-programming

有人知道如何在prototype属性下获取typeof对象吗?即我有下一个代码:

Object.prototype.someproperty = function(){
...do something...
console.log(typeof this); 
..more...
}

在我的代码中,这导致了“函数”,因为对象的构造函数是一个函数。当我这样打电话时

Array.someproperty(); //In this i want get "array"
//or
String.someproperty(); //In this i want get "string"

我想要“数组”代替“功能”...有人知道怎么做?

2 个答案:

答案 0 :(得分:1)

这里的问题是this通过ArrayString调用时绑定到函数而不是类型的实例。我知道确定调用哪些函数的唯一方法是进行手动测试,如下所示

Object.prototype.someproperty = function() {
  if (this === Array) {
    return "array";
  } else if (this === String) {
    return "string";
  } 
  ...
}

在这种情况下,虽然您实际上并未报告正在调用原型的对象类型。值“功能”非常准确。这更像是一种启发式而不是真正的类型测试

答案 1 :(得分:0)

最后这段时间以及大量的阅读和学习,我已经看到扩展原型对象是非常糟糕的做法。我感谢大家的支持。