第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

js中如何繼承實(shí)現(xiàn)Array的子類?

js中如何繼承實(shí)現(xiàn)Array的子類?

炎炎設(shè)計(jì) 2019-02-04 09:05:19
試想需要實(shí)現(xiàn)一個(gè)數(shù)組的子類ZeroArray,其構(gòu)造函數(shù)接收一個(gè)長(zhǎng)度參數(shù)n,自動(dòng)初始化數(shù)組元素都為0。我試圖繼承原生的Array類型,成員變量通過(guò)apply()方法竊取,成員方法則通過(guò)原型鏈引用。代碼如下:function ZeroArray(n) {    // 構(gòu)造函數(shù)竊取     Array.apply(this);    // 自動(dòng)塞入0元素     for (var i = 0; i < n; i++) {        this.push(0);     } }// 利用空函數(shù)作為過(guò)渡,ZeroArray原型的原型指向Array.prototype// 既建立原型鏈,又不影響Array.prototype本身,而且防止Array構(gòu)造函數(shù)重復(fù)調(diào)用兩次var F = function() {}; F.prototype = Array.prototype; ZeroArray.prototype = new F(); ZeroArray.prototype.constructor = ZeroArray;那么問(wèn)題來(lái)了:Object.getOwnPropertyDescriptor(new Array(), "length")// 輸出:Object {value: 0, writable: true, enumerable: false, configurable: false} Object.getOwnPropertyDescriptor(new ZeroArray(3), "length")// 輸出:Object {value: 3, writable: true, enumerable: true, configurable: true}為什么兩者的length屬性enumerable/configurable會(huì)不同?是不是因?yàn)锳rray本質(zhì)上并不是Object?
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

你提了個(gè)有意思的問(wèn)題,只指出一點(diǎn),但解決不了你的問(wèn)題。

繼承的話,下面這種寫法更好。

function ZeroArray(n) {    // 自動(dòng)塞入0元素
    for (var i = 0; i < n; i++) {        this.valueOf().push(0);
    }
}

ZeroArray.prototype = [];//但enumerable和configurable依舊變了console.log(Object.getOwnPropertyDescriptor([1,2,3], "length"))console.log(Object.getOwnPropertyDescriptor(new ZeroArray(3), "length"))


查看完整回答
反對(duì) 回復(fù) 2019-03-16
  • 2 回答
  • 0 關(guān)注
  • 845 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)