鍍金池/ 問答/數據分析&挖掘  網絡安全  HTML/ array.last = doSomething;數組通過點操作符賦值是什么意思

array.last = doSomething;數組通過點操作符賦值是什么意思?

看一個別人的代碼時,發(fā)現這種操作,請問是什么意思。

    let stack = [];
    stack.last = function () {
        return this[this.length - 1];
    };

我自己在控制臺做這種操作,發(fā)現length是0,也不能通過索引訪問到。

clipboard.png

回答
編輯回答
命于你

clipboard.png

2017年11月12日 10:35
編輯回答
吃藕丑

JS里面的所有類都繼承Object,Array也不例外,所以你用對象賦值是可以的

2017年6月17日 06:23
編輯回答
枕頭人

萬物介對象 數組也是個對象 是對象就可以給他添加方法

2017年8月25日 13:44
編輯回答
心上人

就是給stack綁定一個靜態(tài)方法,你現在stack里面沒東西,當然打出來的都是undefined

2018年6月24日 18:10
編輯回答
傲嬌范

謝邀!
疑惑一:點操作符添加方法
JavaScript 原生提供Object對象(注意起首的O是大寫),所有其他對象都繼承自這個對象。Array是JavaScript的內置對象,所以Object特有的方法和屬性,Array同樣也有。
疑惑二:數組length為0
stack.last賦值其實是開辟了兩個內存地址,你可以理解把它理解成“雙胞胎”,長相一模一樣都叫stack,但雙胞胎歸雙胞胎,終究不是一個人,一個是哥哥對象,另一個是弟弟數組。你給哥哥賦值,并沒有給弟弟添加元素。而length是Array的實例屬性,返回或設置一個數組中的元素個數。這是弟弟數組的屬性,自始至終您并沒有對弟弟數組做什么,所以弟弟數組的length屬性還是0.

2017年2月2日 06:52