执行对象的功能/方法

时间:2017-08-01 20:49:17

标签: javascript function object

有没有办法在JS中使用这样的东西:

select 
[SQ. FT. AREA],
[1]
from test.dbo.SFR_MAIN

union all

Select
[SQ. FT. AREA],
MULTIPLIER * (select
m.[1]
from test.dbo.SFR_MAIN m
inner join
    (
    select max([SQ. FT. AREA]) as mmm 
    from test.dbo.SFR_MAIN  
    ) tt on  tt.mmm = m.[SQ. FT. AREA]
 ) as [1]
from test.dbo.mult

然后将其应用于对象:

onerror="wifioff()"

我收到一个错误,prop.a()不是函数,但是如果我调用x.a()就没有问题。不是非常重要,但我只是想知道,但找不到答案。

2 个答案:

答案 0 :(得分:3)

iterateObject的调用中,在匿名函数中,prop是字符串"a"。此外,x是您的原始对象。

要按对象(prop)按名称(x)访问媒体资源,您必须执行x[prop]。要调用该函数,您应该在匿名函数中编写x[prop]()

答案 1 :(得分:1)

function iterateObject(obj, f) {
  for (let prop in obj) {
    if (obj.hasOwnProperty(prop)) {
      f(obj[prop]); 
      // You were earlier just passing the key 'a' as a string to the function.
      // Hence it was giving you an error
      // You need to pass the function i.e obj[prop]
    }
  }
}

let x = {
  a: function() {
    console.log('hello');
  }
};

iterateObject(x, (prop) => {
  // You will get the function as prop
  // To execute it you need to directly call it using prop()
  prop();
});