簡體   English   中英

Javascript:使用字符串調用函數

[英]Javascript : use string to invoke function

我的問題很簡單。 在Php中,可以調用函數名稱中包含字符串的函數。 范例:

function setName(name){
    $this->name = name;
}

$string = 'Name';
$method = 'set'.$string;
if(method_exists($this, $method)
    $this->$method($_POST['name']);

所以我想知道Javascript中是否有類似的東西……現在,我正在使用一個開關來檢查主體ID並調用該函數。 這是我的代碼:

switch($('body').attr('id'))
{
    case 'index':
        app.index.init();
        break;
    case 'login':
        app.login.inint();
        break;
};

app.index = {
    init : function(){
        console.log('Hola Mundo');
    }
};

所以我想知道我是否可以做這樣的事情:

var id = $('body').attr('id');
app.id.init();

感謝您的回答。

是。

app[id].init();

但是請考慮一下,如果James指出,如果未在app對象中定義您的身體ID,則可能會導致錯誤。

可以辦到。 您不必在開關中檢查它。 由於id屬性是一個字符串值,因此您可以使用objectInstance[prop]方法直接檢查屬性是否存在,如果存在,則可以安全地調用它:

app.index = {
    init : function(){
        console.log('Hola Mundo');
    }
};
app.login = {
    init : function(){
        console.log('Hola Mundo');
    }
};
var appProp = $('body').attr('id'); /* or var id = $('body').id; */
if(app[appProp]){
   app[appProp].init();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM