如何在数组内一个元素引用另一个元素?

我想将每个图标打开的次数分别存储在油猴里面,建了一个数组分别存放图标的名称、图片、链接、弹出的信息,弹出的信息是一个函数,点击图标时执行打开链接和统计次数

我需要在函数里面引用当前的图标的名称,如何通过JavaScript实现呢?或者是否有其他的办法?

在这个脚本基础上改的划词脚本

var iconArray = [
        {
            name: 'Google',
            image: 'https://i.ibb.co/R9HMTyR/1-5.png',
            host: ['www.google.com'],
            popup: function (text, name) {
                open('https://www.google.com/s?wd=' + encodeURIComponent(text), name);
                console.log(name);
            }
        },
        {
            name: 'Bing',
            image: 'https://i.ibb.co/R9HMTyR/1-5.png',
            host: ['www.bing.com'],
            popup: function (text, name) {
                open('https://www.bing.com/s?wd=' + encodeURIComponent(text), name);
                console.log(name);
            }
        },
    ]
function open(url, a) {
         try {
             if(GM_openInTab(url, { loadInBackground: true, insert: true, setParent :true })){

                    if(GM_getValue(a).times){
                        GM_setValue(a, {
                            'times': GM_getValue(a).times + 1
                        });
                    }else{
                        GM_setValue(a, {
                            'times': 1
                        });
                    }
                    console.log('times-'+GM_getValue(a).times);

             } else{

             }
         } catch (error) {
             return GM_openInTab(url, { loadInBackground: true, insert: true, setParent :true });
         }
    }

我想在油猴里面这样存放数据,打开Google 1次,Bing 4次

{
    "Google": {
        "times": "1",
    },
    "Bing": {
        "times": "4",
    },
      
}
阅读 2.1k
2 个回答

通过调用popup函数的时候传入name解决啦

我觉得你一个iconArray把元素对象抽象出来封装成功一个类来共享pop方法,这样开发业务更加轻便快捷,简单示例。

class Icon {
  constructor(name, text) {
    this.name = name
    this.text = text
  }

  popup() {
    open('https://www.bing.com/s?wd=' + encodeURIComponent(this.text), this.name);
    console.log(this.name)
  }
}

const iconArray = [ new Icon('Google', 'xxxx'), new Icon('Bing', 'xxxx') ]

// 后期调用
iconArray[0].popup()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题