为什么我无法从对象方法访问我的自定义字符串原型?



我有一个自定义字符串原型,对字符串做一些动作;

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函数后定义它。
更改导入的顺序应该可以解决这个问题。你能给我们展示一下这个项目的结构吗?你要把这个原型文件导入到哪里?

相关内容

  • 没有找到相关文章

最新更新