有人知道如何在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"
我想要“数组”代替“功能”...有人知道怎么做?
答案 0 :(得分:1)
这里的问题是this
通过Array
和String
调用时绑定到函数而不是类型的实例。我知道确定调用哪些函数的唯一方法是进行手动测试,如下所示
Object.prototype.someproperty = function() {
if (this === Array) {
return "array";
} else if (this === String) {
return "string";
}
...
}
在这种情况下,虽然您实际上并未报告正在调用原型的对象类型。值“功能”非常准确。这更像是一种启发式而不是真正的类型测试
答案 1 :(得分:0)
最后这段时间以及大量的阅读和学习,我已经看到扩展原型对象是非常糟糕的做法。我感谢大家的支持。