2016-01-20 66 views
1

我正在嘗試使用類似於jquery的JavaScript方法創建鏈接。請讓我知道如何用JavaScript實現鏈接。用javascript鏈接方法

var controller = { 
    currentUser: '', 
    fnFormatUserName: function(user) { 
     this.currentUser = user; 
     return this.currentUser.toUpperCase(); 
    }, 
    fnCreateUserId: function() { 
     return this.currentUser + Math.random(); 
    } 
} 
var output = controller.fnFormatUserName('Manju').fnCreateUserId(); 
+1

對不起,這裏的預期結果是什麼? –

+0

'fnFormatUserName'返回一個字符串,所以如果你想要那麼你不能使用該方法來鏈... –

+0

你不能使用getter方法進行鏈接 –

回答

1

正如我已經解釋過,因爲你是從fnFormatUserName返回一個字符串,你不能用它來鏈接。

要啓用鏈接,您需要返回調用方法的對象。所以,你不能使用getter方法進行鏈接。

在您的例子,來處理它的方式是有getter方法和方法的更新,可用於鏈接對象像

var controller = { 
 
    currentUser: '', 
 
    fnFormatUserName: function(user) { 
 
    this.currentUser = user.toUpperCase(); 
 
    return this; 
 
    }, 
 
    fnCreateUserId: function() { 
 
    this.userId = this.currentUser + Math.random(); 
 
    return this; 
 
    }, 
 
    getUserId: function() { 
 
    return this.userId; 
 
    } 
 
} 
 
var output = controller.fnFormatUserName('Manju').fnCreateUserId().getUserId(); 
 
document.body.innerHTML = output;


另一個版本, be

var controller = { 
 
    currentUser: '', 
 
    fnFormatUserName: function(user) { 
 
    if (arguments.length == 0) { 
 
     return this.currentUser; 
 
    } else { 
 
     this.currentUser = user.toUpperCase(); 
 
     return this; 
 
    } 
 
    }, 
 
    fnCreateUserId: function() { 
 
    this.userId = this.currentUser + Math.random(); 
 
    return this; 
 
    }, 
 
    getUserId: function() { 
 
    return this.userId; 
 
    } 
 
} 
 
var output = controller.fnFormatUserName('Manju').fnCreateUserId().getUserId(); 
 
r1.innerHTML = output; 
 
r2.innerHTML = controller.fnFormatUserName();
<div id="r1"></div> 
 
<div id="r2"></div>

+0

返回'this'謝謝Arun,解決方案工作正常。但有沒有像我可以在一個對象內創建一個方法的方法,以便它可以在方法調用期間用作單個方法,並且還用於方法鏈接 – Manju

+0

@Manju有,但是應該有一些方法讓方法知道是否返回對象本身或其他值.... jQuery使用不同方法的模式,它使用與setter和getter相同的方法,其中當設置值時(即傳遞參數時)它會返回可用於鏈接的對象,當用作getter時,它將只返回一個字符串/不管用於鏈接的值是什麼 –

+0

@Manju查看更新 –