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

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

基本對(duì)象/函數(shù)鏈如何在javascript中工作?

基本對(duì)象/函數(shù)鏈如何在javascript中工作?

牛魔王的故事 2019-09-13 15:05:01
基本對(duì)象/函數(shù)鏈如何在javascript中工作?我正試圖讓jQuery風(fēng)格的函數(shù)鏈接在我的腦海中。我的意思是:var e = f1('test').f2().f3();我有一個(gè)例子可以工作,而另一個(gè)沒有。我會(huì)發(fā)布以下內(nèi)容。我總是想學(xué)習(xí)第一個(gè)原理的基本原理,以便我可以在它之上構(gòu)建。到目前為止,我對(duì)鏈接的工作方式只有一個(gè)粗略而寬松的理解,而且我遇到了一些我無法智能排除故障的錯(cuò)誤。我知道的:函數(shù)必須返回自己,即“返回此”;可鏈接函數(shù)必須駐留在父函數(shù)中,也就是在jQuery中.css()是jQuery()的子方法,因此jQuery()。css();父函數(shù)應(yīng)該返回自身或自身的新實(shí)例。這個(gè)例子有效:var one = function(num){     this.oldnum = num;     this.add = function(){         this.oldnum++;         return this;     }     if(this instanceof one){         return this.one;         }else{         return new one(num);         }}var test = one(1).add().add();但是這個(gè)沒有:var gmap = function(){     this.add = function(){         alert('add');         return this;         }        if(this instanceof gmap) {         return this.gmap;        } else{         return new gmap();       }}var test = gmap.add();
查看完整描述

3 回答

?
桃花長(zhǎng)相依

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

在JavaScript中,函數(shù)是第一類對(duì)象。定義函數(shù)時(shí),它是該函數(shù)對(duì)象的構(gòu)造函數(shù)。換一種說法:

var gmap = function() {
    this.add = function() {
        alert('add');
    return this;
    }

    this.del = function() {
       alert('delete');
       return this;
    }

    if (this instanceof gmap) {
        return this.gmap;
    } else {
        return new gmap();
    }}var test = new gmap();test.add().del();

通過分配

新gmap();

在變量測(cè)試中,您現(xiàn)在構(gòu)建了一個(gè)新對(duì)象,該對(duì)象“繼承”了gmap()構(gòu)造函數(shù)(類)中的所有屬性和方法。如果您運(yùn)行上面的代碼段,則會(huì)看到“添加”和“刪除”的提醒。


在上面的示例中,“this”指的是窗口對(duì)象,除非您將函數(shù)包裝在另一個(gè)函數(shù)或?qū)ο笾小?/p>

起初我很難理解鏈接,至少對(duì)我來說是這樣,但是一旦我理解了它,我就意識(shí)到它可以是多么強(qiáng)大的工具。



查看完整回答
反對(duì) 回復(fù) 2019-09-16
?
慕娘9325324

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

可悲的是,直接答案必須是“不”。即使你可以覆蓋現(xiàn)有的方法(你可能在許多UAs中,但我懷疑不能在IE中),你仍然會(huì)遇到令人討厭的重命名:

HTMLElement.prototype.setAttribute = function(attr) { 
    HTMLElement.prototype.setAttribute(attr) //uh-oh;  }

您可能最好的方法是使用不同的名稱:

HTMLElement.prototype.setAttr = function(attr) {
    HTMLElement.prototype.setAttribute(attr);
    return this;}



查看完整回答
反對(duì) 回復(fù) 2019-09-16
?
繁花不似錦

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

要“重寫”一個(gè)函數(shù),但仍然能夠使用原始版本,必須先將原始函數(shù)分配給另一個(gè)變量。假設(shè)一個(gè)示例對(duì)象:

function MyObject() { };MyObject.prototype.func1 = function(a, b) { };

要重寫func1可鏈接性,請(qǐng)執(zhí)行以下操作:

MyObject.prototype.std_func1 = MyObject.prototype.func1;MyObject.prototype.func1 = function(a, b) {
    this.std_func1(a, b);
    return this;};

這是一個(gè)有效的例子。您只需要在所有需要可鏈接性的標(biāo)準(zhǔn)對(duì)象上使用此技術(shù)。

當(dāng)你完成所有這些工作時(shí),你可能會(huì)意識(shí)到有更好的方法來完成你想要做的事情,比如使用已經(jīng)內(nèi)置可鏈接性的庫。* cough * jQuery * cough *



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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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