2016-02-29 26 views
1

我想構建兩個函數來像jQuery函數一樣工作,例如:jQuery('select')。val();像jQuery那樣的函數結果的調用函數

這工作:

function func(a) { 
    console.log(1); 
    return a; 
} 

func.sub = function(n) { 
    console.log(2); 
} 

func.sub(2); 

但這並不:

function func(a) { 
    console.log(1); 
    return a; 
} 

func.sub = function(n) { 
    console.log(2); 
    //return func result[n]; 
} 

func([1,2,3]).sub(2); 

我怎樣才能讓這第二個代碼工作和閱讀FUNC()在子導致()?

+0

數組將從函數'func'返回 –

+0

我知道,我問如何以正確的方式做到這一點,所以它會工作。 – Mark

回答

1

您需要讓func返回一個方法爲sub的對象。

function Subbable(x) { 
    this.value = x; 
} 
Subbable.prototype.sub = function(b) { 
    return this.value - b; 
} 

function func(a) { 
    return new Subbable(a); 
} 

func(10).sub(2) 
// 8 

jQuery的$(...)一般會返回一個包含所選節點的集合,而其原型具有的一切好東西像.attr.css一個jQuery對象。