繁体   English   中英

为什么我不能从 object 方法访问我的自定义字符串原型?

[英]Why can't I access my custom string prototype from an object method?

我有一个自定义字符串原型,可以对字符串执行一些操作;

String.prototype.norm_to_ascii=function(){return unescape(encodeURIComponent(this))};

在我的示例中,我想要应用原型的字符串是位于 SampleObject object 之外的全局 object 属性。 在我的实际代码中,它会被这样引用;

var userObject = {
   name: "SomeName",
   id: "SomeID"
}

除了在特定的 Object 方法中之外,它在我的项目(其他 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 扩展中,所以我在服务工作者中定义了原型,它可以在弹出和内容页面以及服务工作者中使用,所以它必须与 object 方法有关,但我不知道为什么? 谁能提供任何建议以将该原型公开给 object 方法而无需重新定义它?

编辑我的解释应该更清楚。 我更新了上面的示例。

你忘了this

this.otherTestValue.norm_to_ascii()

在看到更新后的问题后,我的结论是您在运行它之后定义norm_to_ascii function。
更改导入的顺序应该可以解决问题。 您能否向我们展示项目的结构以及您在哪里导入带有该原型的文件?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM