簡體   English   中英

對象上的Javascript數組表示法

[英]Javascript array notation on object

我想知道這是如何在幕后工作的: https//learn.jquery.com/using-jquery-core/faq/how-do-i-pull-a-native-dom-element-from-a -jquery對象/

JQuery如何設置foo[0]來執行get函數。 我看了一下源代碼,但我找到的只是這個:

get: function( num ) {
    return num != null ?

        // Return just the one element from the set
        ( num < 0 ? this[ num + this.length ] : this[ num ] ) :

        // Return all the elements in a clean array
        slice.call( this );
},

我如何自己的對象,以便訪問數組索引調用這樣的函數?

我想做同樣的事情:

myObj[0];

行為與...相同

myObj.get(0);

看JQuery這一定是可能的,因為它不僅手動為每個索引設置this[0] = 'whatever' ,它以某種方式執行.get函數。 有沒有辦法說每當進行數組查找時,執行一個函數?

這是因為在jQuery 0是包含DOMElement的對象中屬性的鍵。 這意味着您實際上是按鍵訪問對象,而不是按索引訪問數組。 get()方法只是該訪問器的包裝器。 這是一個有效的例子:

 var obj = { '0': 'hello!', get: function(key) { return this[key]; } }; console.log(obj[0]); console.log(obj.get(0)); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

JQuery如何設置foo [0]來執行get函數

反過來說。 get(0)只需調用[0]

jQuery創建了一個類似於數組的元素對象的堆棧,因此,對於extraxt,你可以使用數組語法,例如[0]

在意識到JQuery方法對我不起作用之后,因為我想在調用時執行代碼,我找到了使用Proxy對象的解決方案:

var p = new Proxy(Obj, {
   get(target, name, receiver) {
    console.log(name);
    return name;
   }
});

p[0]將打印0並允許在函數內執行代碼。 我不確定這是否適用於所有瀏覽器,但這適用於節點項目。

暫無
暫無

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

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