如何在动态生成的名称上调用方法?这是我将对象名称传递给函数并在该对象上调用方法的情况。像这样的东西,其中type是我想要执行方法的对象的名称:
function doSomething(type) {
type.someMethod();
}
请注意,我不想将对象传递给函数。
答案 0 :(得分:1)
如果您的对象是全局的,您可以这样做:
<?php
#footer block
$footer_title = get_post_meta($post->ID, '_cmb_footer_block_title', true);
$footer_content = apply_filters('the_content', get_post_meta($post->ID, '_cmb_footer_block_text', true)); ?>
<div class="col-xs-12 col-sm-6 col-md-3 footer-col-1">
<h2 class="footer-title"><?php echo $footer_title; ?></h2>
<?php echo $footer_content; ?>
</div> ?>
答案 1 :(得分:1)
首先,不清楚“类型”属于哪个对象。我猜这是在范围内,也许是这样的:
var typeObjects = {
type1: {
doSomething: function(){..},
..
},
type2: {
doSomething: function(){..},
..
},
..
}
然后,您的功能将变为以下内容:
function doSomething(typeName) {
typeObjects[typeName].someMethod();
}
然后你会这样称呼它:
doSomething('type1');
答案 2 :(得分:0)
您需要评估对象名称或方法。
eval(type)['someMethod']();
或
eval(type + '.someMethod()');
此外,如果您的对象位于 window 范围内,则可以执行
window[type].someMethod();
答案 3 :(得分:0)
如果要将变量名称传递给函数,请考虑传递预定对象的属性名称,以便您的函数不会使用eval()
从其作用域中不安全地访问任意对象,这是一个错误出于安全和性能原因进行练习。
var myObject = {
foo: { someMethod () { console.log('fooObj') } },
bar: { someMethod () { console.log('barObj') } }
}
function doSomething (property) {
if (myObject.hasOwnProperty(property)) {
myObject[property].someMethod()
}
}
doSomething('foo')
doSomething('bar')
doSomething('nil') // does nothing
&#13;