我想在typescript 中的对象原型上添加自定义方法
Object.prototype['someMethodForObject'] = function() {
console.log('do something ');
}
之后我得到
value.match is not a function at WebAnimationsStyleNormalizer.normalizeStyleValue (browser.js:2008)
但当我尝试用String
做同样的事情时,它就起作用了——我没有收到错误
String.prototype['someMethodForString'] = function (length: number) {
console.log('do something');
};
为什么会这样?如何将方法添加到对象原型中?
通常,添加到JS全局构造函数的原型中是个坏主意。在";WebAnimationStyleNormalizer";(无论如何都不确定这是什么(正在做类似于for (const value in obj)
的事情,由于obj是一个对象并继承了Object
的原型,所以突然间,您的someMethodForObject
就在那个循环中了。
以以下代码为例
const obj = { a: 5 }
for (const value in obj) {
console.log(value)
}
将记录";a";。
何处
Object.prototype.test = function() { }
const obj = { a: 5 }
for (const value in obj) {
console.log(value)
}
将立即登录"a";然后";测试";。
至于为什么这在JS中对你有效,而在TS中无效,如果没有更多信息,我无法确定。我想在你的TS代码中有一个库正在为。。在导致此错误的对象上循环。