Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript使用字符串中的动态参数实例化新对象_Javascript - Fatal编程技术网

JavaScript使用字符串中的动态参数实例化新对象

JavaScript使用字符串中的动态参数实例化新对象,javascript,Javascript,我想用来自外部字符串的动态参数实例化一个新对象 代码如下: const editorInstance = new Editor('#edit', { placeholderText: null, theme: 'dark', language: 'en', linkList:[{text: 'test',href: 'test',target: '_blank'}], events: { initialized: function () {

我想用来自外部字符串的动态参数实例化一个新对象

代码如下:

const editorInstance = new Editor('#edit',
  {
    placeholderText: null,
    theme: 'dark',
    language: 'en',
    linkList:[{text: 'test',href: 'test',target: '_blank'}],
    events: {
      initialized: function () {
        const editor = this

        this.el.closest('form').addEventListener('submit', function (e) {
          jQuery('#gs_editor_content').hide();
          jQuery(this).append('<div class="loadingDiv">&nbsp;</div>');
          o.script
        });

        texta = jQuery('#myeditor').find('textarea');
        targetFile = texta.attr('rel');
        content = editor.$oel.val();

        e.preventDefault();

        var fd = new FormData(); 
        fd.append( 'name' ,targetFile);
        fd.append( 'html', editor.$oel.val() );
        $.ajax({
          url : 'http://localhost/Update',
          type : 'POST',
          data: fd,
          processData : false,
          contentType : false,
          async : false,
          success : function(data, textStatus, request) {}
        });

        jQuery('#myeditor').dialog("close");

      }
    }
  }
)

在实例化之前更改值没有问题。据我所知,这里的问题是,您有一个无效的JSON,请参见。如果可以控制服务器响应,则应发送有效的JSON,否则应解析字符串。正如您在评论中所说的,您有如下内容:

"[{text: 'script1.pdf',href: 'null',target: '_blank'}{text: 'script2.pdf',href: 'null',target: '_blank'}{text: 'script3.pdf',href: 'null',target: '_blank'}]"  
如果可以更改服务器响应,请将其转换为以下内容:

'[{"text": "script1.pdf","href": "null","target": "_blank"},{"text": "script2.pdf","href": "null","target": "_blank"},{"text": "script3.pdf","href": "null","target": "_blank"}]'
然后:

类编辑器{
构造函数(数组){
this.linkList=数组;
}
}
const json='[{“text”:“script1.pdf”,“href”:“null”,“target”:“\u blank”},{“text”:“script2.pdf”,“href”:“null”,“target”:“\u blank”},{“text”:“script3.pdf”,“href”:“null”,“target”:“\u blank”}”;
const array=JSON.parse(JSON.map)(e=>{e.target=“\u self”返回e;});
//您可以在创建新实例之前更改所需内容
const e=新编辑器(数组);

控制台日志(e)该问题可能是由异步引起的。在从服务器收到响应之前,您的类正在初始化。您需要在收到响应后初始化类

比如说

const editorInstance=new Editor(“#edit”{
占位符文本:空,
主题:“黑暗”,
语言:“恩”,
linkList:serverExample()//未定义
});
函数serverExample(){
设置超时(()=>{
返回[
{text:“test”,href:“test”,target:“_blank”},
{文本:“test2”,href:“test”,目标:“\u blank”}
];
}, 3000);

}
如果我正确理解了您的问题,您是否正在尝试在将链接列表包含到新对象之前更新它

如果是这种情况,您可以使用基于承诺的东西,例如fetch来获取数据:。您已经在使用JS类,所以我相信您已经意识到浏览器兼容性或使用Babel(如果浏览器兼容性对您很重要的话)

如果您更喜欢使用jQuery AJAX获取数据,可以在软件实例化对象之前使用async Wait更新链接列表

在这种情况下,您可以执行以下操作:

异步函数getData(paramifRequired){ var linkListData=等待linkListFunction(paramIfNeeded2); 返回linkListData } 函数linkListFunction(paramIfNeeded2){ //您最喜欢的数据提取功能 } getData()。然后((结果)=>{ var linkList=结果; //实例化对象
});如何从服务器接收您的
链接列表
?它可能是作为JSON字符串发送的。否?在这种情况下,请尝试使用
linkList=JSON.parse(yourData)
。然后您应该能够将
linkList
传递给新类。linkList是一个简单的字符串,它是JSON格式吗?可能与Hi-Emeeus重复,这不是JSON格式的问题,只是如何使用动态参数实例化对象的问题(不管是字符串还是JSON都不重要)。如您所见,我的Objet编辑器有多个参数,除了服务器提供的参数链接列表之外,所有参数都是静态参数。
'[{"text": "script1.pdf","href": "null","target": "_blank"},{"text": "script2.pdf","href": "null","target": "_blank"},{"text": "script3.pdf","href": "null","target": "_blank"}]'