如何将对象属性作为参数传递?

时间:2017-10-25 00:32:24

标签: javascript parameters properties arguments javascript-objects

我一直试图找出这一段时间。

我需要编写一个函数,通过参数获取属性的值。这将最大限度地减少我必须编写的代码。它是属于游戏循环的函数(每秒调用一次)

该函数只取一个数字并除以预先确定的数字,然后在数字后面加上相应的字母(1.000将变为1k)

游戏使用了大量的数字,对于10个数字中的9个,我想这样做。

示例:

function Truncate (object, rss, idtr, idtr1, idtr2) {
var n1 = 1000;
var n2 = 1000000;
var n3 = 1000000000;
var n4 = 1000000000000;

if ( rss == "gas" ){ var a1 =    object.currentgas;
   if  (a1 < n1) {
          trunkholdergas = a1;
           document.getElementById(idtr).innerHTML = " "; }
  else if (a1 >= n1 && a1 < n2) {
        trunkholdergas = a1 / n1;   
            document.getElementById(idtr).innerHTML = "k"; }

我在循环中调用此行:

Truncate (Player, 'gas', 'trunkgas');

由于我使用了一个工作,我创建了一个if语句系统,所以我的函数知道如何处理我给它。这是有效的,但我必须指定所有我宁愿直接传递属性的地方。

我还发现,如果我将变量作为参数给出,它将不允许我初始化它的值。含义我还必须指定包含每种情况的变化值的变量。

像这样不起作用:

Truncate (Player, 'gas', 'trunkgas', vari);


 if ( rss == "gas" ){ var a1 = object.currentgas;
       if  (a1 < n1) {
              vari = a1;
         document.getElementById(idtr).innerHTML = " "; }

我只是做错了还是这些javascripts限制?

我正在寻找一个纯粹的JavaScript解决方案,因为这正是我目前正在学习的内容。

编辑:问题已经解决。对于在他/她的项目中需要类似功能的人来说,代码是:

function Truncate (object,  idtr, idtr1) {
var n1 = 1000;
   var n2 = 1000000;
   var n3 = 1000000000;
   var n4 = 1000000000000;

  var a1 = object;
   var trunkholder = 0;

  if  (a1 < n1) {
              trunkholder = a1;
         document.getElementById(idtr).innerHTML = " "; 
         document.getElementById(idtr1).innerHTML = trunkholder.toFixed(2); }
      else if (a1 >= n1 && a1 < n2) {
            var b = a1 / n1;
            trunkholder = b;   
         document.getElementById(idtr).innerHTML = "k"; 
         document.getElementById(idtr1).innerHTML = trunkholder.toFixed(2);}
     else if(a1 >= n2 && a1 < n3) {
            var c = a1 / n2;   
            trunkholder = c;
         document.getElementById(idtr).innerHTML = "m"; 
         document.getElementById(idtr1).innerHTML = trunkholder.toFixed(2);}
     else if (a1 >= n3 && a1 < n4){
            var d = a1 / n3;
            trunkholder = d;
            document.getElementById(idtr).innerHTML = "b"; 
            document.getElementById(idtr1).innerHTML = trunkholder.toFixed(2);}
        else if ( a1 >= n4 ) {
              var e = a1 / n4; 
              trunkholder = e;
           document.getElementById(idtr).innerHTML = "t"; 
           document.getElementById(idtr1).innerHTML = trunkholder.toFixed(2);} 
};

调用该函数:

Truncate (Player.currentgas, 'trunkgas', 'currentgas');

它使用指定属性的值和我用于显示数字和相应字母的元素的id名称。它只使用2个变量来存储原始数字和修改后的数字,直接传递给接口。这样你就可以无限次地调用它。

希望这对某人有用!

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解这个问题,但可以将JavaScript对象属性传递给函数。您可以使用Object.keys()获取对象包含的属性列表,并将字符串值发送给函数。您可以在此处阅读更多内容https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

如果您的意思是传递该对象属性的值,那么它就像object["property"]object.property

一样简单
相关问题