成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用js的方法實(shí)現(xiàn)一個(gè)new

lemanli / 1824人閱讀

摘要:運(yùn)算符創(chuàng)建一個(gè)用戶定義的對象類型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對象的實(shí)例。新建對象鏈接對象設(shè)置指向原來指向執(zhí)行一次構(gòu)造函數(shù)返回對象當(dāng)代碼執(zhí)行時(shí),會發(fā)生以下事情一個(gè)繼承自的新對象被創(chuàng)建。使用指定的參數(shù)調(diào)用構(gòu)造函數(shù),并將綁定到新創(chuàng)建的對象。

new 運(yùn)算符創(chuàng)建一個(gè)用戶定義的對象類型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對象的實(shí)例。new 關(guān)鍵字會進(jìn)行如下的操作:

1.創(chuàng)建一個(gè)空的簡單JavaScript對象(即{});
2.鏈接該對象(即設(shè)置該對象的構(gòu)造函數(shù))到另一個(gè)對象 ;
3.將步驟1新創(chuàng)建的對象作為this的上下文 ;
4.如果該函數(shù)沒有返回對象,則返回this。

window.name = "iii"

function Person(){
    this.name = 3
}
Person.prototype.say = function(){
    console.log(this.name)
}
var p1 = new Person();
p1.say() //3
function _new(P){
    let o = {}; //1.新建對象
        let arg = Array.prototype.slice.call(arguments,1);
        o.__proto__ = P.prototype; //2.鏈接對象
       // P.prototype.constructor = P;
        P.apply(o,arg);//3.設(shè)置this指向obj(原來指向window)//執(zhí)行一次構(gòu)造函數(shù)
        return o;//4.返回對象
}
var p2 = _new(Person)
p2.say() //3

console.log(p2 instanceof Person ) //true
console.log(p2.construtor === p1.construtor) //true

當(dāng)代碼 new Foo(...) 執(zhí)行時(shí),會發(fā)生以下事情:

一個(gè)繼承自 Foo.prototype 的新對象被創(chuàng)建。
使用指定的參數(shù)調(diào)用構(gòu)造函數(shù) Foo,并將 this 綁定到新創(chuàng)建的對象。new Foo 等同于 new Foo(),也就是沒有指定參數(shù)列表,F(xiàn)oo 不帶任何參數(shù)調(diào)用的情況。
由構(gòu)造函數(shù)返回的對象就是 new 表達(dá)式的結(jié)果。如果構(gòu)造函數(shù)沒有顯式返回一個(gè)對象,則使用步驟1創(chuàng)建的對象。(一般情況下,構(gòu)造函數(shù)不返回值,但是用戶可以選擇主動返回對象,來覆蓋正常的對象創(chuàng)建步驟)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110299.html

相關(guān)文章

  • js溫故而知新7(面向?qū)ο缶幊?——學(xué)習(xí)廖雪峰js教程

    摘要:不區(qū)分類和實(shí)例的概念,而是通過原型來實(shí)現(xiàn)面向?qū)ο缶幊獭P聞?chuàng)建的的原型鏈?zhǔn)且簿褪钦f,的原型指向函數(shù)的原型。最后,創(chuàng)建一個(gè)對象代碼和前面章節(jié)完全一樣小明繼承用定義對象的另一個(gè)巨大的好處是繼承更方便了。 JavaScript不區(qū)分類和實(shí)例的概念,而是通過原型(prototype)來實(shí)現(xiàn)面向?qū)ο缶幊獭?原型是指當(dāng)我們想要創(chuàng)建xiaoming這個(gè)具體的學(xué)生時(shí),我們并沒有一個(gè)Student類型可用...

    Jaden 評論0 收藏0
  • 原生 JS 實(shí)現(xiàn) MVVM 框架1——觀察者模式和數(shù)據(jù)監(jiān)控

    摘要:在前端頁面中,把用純對象表示,負(fù)責(zé)顯示,兩者做到了最大化的分離把和關(guān)聯(lián)起來的就是。了解了思想后,自己用原生實(shí)現(xiàn)一個(gè)框架。注意數(shù)據(jù)描述符和存儲描述符不能同時(shí)存在,否則會報(bào)錯(cuò)報(bào)錯(cuò)數(shù)據(jù)攔截使用來實(shí)現(xiàn)數(shù)據(jù)攔截,從而實(shí)現(xiàn)數(shù)據(jù)監(jiān)聽。 在前端頁面中,把 Model 用純 JS 對象表示,View 負(fù)責(zé)顯示,兩者做到了最大化的分離 把 Model 和 View 關(guān)聯(lián)起來的就是 ViewModel。Vi...

    TANKING 評論0 收藏0
  • JS語言缺陷

    摘要:語言缺陷是一門在極短時(shí)間里創(chuàng)造的腳本語言,它存在很多的不足,這使得在學(xué)習(xí)時(shí)無形加大了學(xué)習(xí)的難度,本文就將這些內(nèi)容進(jìn)行總結(jié),以防繼續(xù)掉坑。 JS語言缺陷 js是一門在極短時(shí)間里創(chuàng)造的腳本語言,它存在很多的不足,這使得在學(xué)習(xí)時(shí)無形加大了學(xué)習(xí)的難度,本文就將這些內(nèi)容進(jìn)行總結(jié),以防繼續(xù)掉坑。 1.變量提升 1.1 案例分析 先來說一下變量提升,它其實(shí)就是先用后聲明,經(jīng)常被拿來說明的一個(gè)例子是:...

    I_Am 評論0 收藏0
  • 現(xiàn)代化方式開發(fā)一個(gè)圖片上傳工具

    摘要:對于圖片上傳,大家一定不陌生。項(xiàng)目地址一環(huán)境搭建本項(xiàng)目使用目前最新的和進(jìn)行開發(fā),所以環(huán)境的搭建必不可少。在目錄下新建代碼內(nèi)容只有行,其輸入為一個(gè)圖片文件,輸出為一串編碼。同樣的方式,我們可以為也設(shè)置一個(gè)代理數(shù)組,以實(shí)現(xiàn)向外拋出數(shù)組的目的。 對于圖片上傳,大家一定不陌生。最近工作中遇到了關(guān)于圖片上傳的內(nèi)容,借此機(jī)會認(rèn)真研究了一番,遂一發(fā)不可收拾,最后琢磨了一個(gè)東西出來。在開發(fā)的過程中有不...

    beanlam 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<