我有一个自定义字符串原型,对字符串做一些动作;
String.prototype.norm_to_ascii=function(){return unescape(encodeURIComponent(this))};
在我的例子中,我想要应用原型的字符串是一个全局对象属性,它位于SampleObject对象之外。在我的实际代码中,它将被这样引用;
var userObject = {
name: "SomeName",
id: "SomeID"
}
它在我的项目(其他js文件)的任何地方工作,除了在一个特定的对象方法;
var SampleObject = { //This is in it's own js file called sampleobject.js
test: 0,
doStringThings {
let something = userObject.id.norm_to_ascii() //RETURNS userObject.id.norm_to_ascii is not a function
}
}
例如,在SampleObject中,我需要使用id,但我需要对userObject中的id值进行一些基本解码这就是字符串原型所做的
我可以在其他地方使用这个字符串原型。这是在一个chrome扩展,所以我已经在服务工作者定义了原型,它可以在弹出窗口和内容页面以及服务工作者中使用,所以它必须与对象方法有关,但我不知道为什么?谁能提供任何建议,将原型暴露给对象方法,而不必重新定义它?
编辑我本应该解释得更清楚一些。我更新了上面的例子。
你忘了this
this.otherTestValue.norm_to_ascii()
在看到更新后的问题后,我的结论是您在运行norm_to_ascii
函数后定义它。
更改导入的顺序应该可以解决这个问题。你能给我们展示一下这个项目的结构吗?你要把这个原型文件导入到哪里?