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

資訊專欄INFORMATION COLUMN

《JavaScript設(shè)計(jì)模式》閱讀筆記_part1

plus2047 / 566人閱讀

摘要:設(shè)計(jì)模式閱讀更多文章查看本專欄第二章類閉包實(shí)現(xiàn)類閉包可以理解為類生成器閉包代碼最多只出版本書構(gòu)造器使用使用方法與普通的是一致的。可以使用安全模式避免忘記使用的情況。

JavaScript設(shè)計(jì)模式閱讀
更多文章查看本專欄
第二章:類 1、閉包實(shí)現(xiàn)類
閉包可以理解為"類生成器"

閉包代碼:

var Book = (function(){
    var bookNum = 0;
    function checkBook(name){
    }
    return function(newId,newName,newPrice){
        var name,price;
        this.id = newId;
        bookNum++;
        if(bookNum > 100){
            throw new Error("最多只出版100本書");
        }
        function checkID(id){}
        this.getName = function(){
            console.log(name);
            return name;
        };
        this.getPrice = function(){
            console.log(price);
            return price;
        };
        this.setName = function (mName) {
            name = mName;
        };
        this.setPrice = function (mPrice) {
            price = mPrice;
        };
        this.copy = function () {};
        // 構(gòu)造器
        this.setName(newName);
        this.setPrice(newPrice);
    }
})();
Book.prototype = {
    isJSBook: false,
    display: function () {
    }
}

使用:

var myBook = new Book("id","name","price");

使用方法與普通的是一致的。
但是如果不加new關(guān)鍵詞的話

var myBook = Book("id","name","price");

當(dāng)不使用new關(guān)鍵詞的時(shí)候只會(huì)將Book執(zhí)行一遍并且this指針為window
并且所有的值都在

可以使用將return的function寫為一個(gè)私有的類,并且將外部的prototype寫在里面,讓閉包看起來更加的舒服,更像是一個(gè)整體。

2、對(duì)象的安全模式

在使用類的時(shí)候可能會(huì)忘記使用new關(guān)鍵詞。這個(gè)時(shí)候調(diào)用就像上面說的那種。執(zhí)行一遍代碼,并且其中的this指向window。

可以使用安全模式避免忘記使用new的情況。

列子:

var Book = function (title,time,type) {
    if(this instanceof Book){
        this.title = title;
        this.time = time;
        this.type = type;
    }else{
        return new Book(title,time,type);
    }
}

本質(zhì)可以看出就是加了一層判斷。

3、js原型鏈對(duì)引用類型的無力。

當(dāng)原型鏈上的值為引用的時(shí)候:

var test = function () {
}
test.prototype.nums = [1,2,3,4];
ins1 = new test();
ins2 = new test();
console.log(ins2.nums);
ins1.nums.push(5);
console.log(ins2.nums);

這里就可以看出來如果原型鏈上的值為引用類型的時(shí)候會(huì)出現(xiàn)問題。

4、多繼承

多繼承的實(shí)現(xiàn)就是將父類們的所有屬性進(jìn)行拷貝到一個(gè)到當(dāng)前類上。
當(dāng)遇到引用類型的時(shí)候應(yīng)當(dāng)深拷貝,但是此處我們只討論淺拷貝的問題。
以下代碼為多繼承:

var mix = function () {
    var len = arguments.length;
    var target = arguments[1];
    var arg;
    for(var i = 1;i < len;i++){
        arg = arguments[i];
        for(var property in arg){
            target[property] = arg[property];
        }
    }
    return arg;
}
5、多態(tài)

多態(tài)是對(duì)arguments里面的值得個(gè)數(shù)進(jìn)行統(tǒng)計(jì),根據(jù)不同的情況給予不同的回應(yīng)。
簡(jiǎn)單例子

var add = function () {
    var len = arguments.length;
    switch (len) {
        case 0:
            return 10;
        case 1:
            return 10 + arguments[0];
        case 2:
            return arguments[0] + arguments[1];
    }
}

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

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

相關(guān)文章

  • JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part1

    摘要:設(shè)計(jì)模式與開發(fā)實(shí)踐讀書筆記。發(fā)布訂閱模式又叫觀察者模式,它定義了對(duì)象之間的一種一對(duì)多的依賴關(guān)系。附設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式數(shù)據(jù)結(jié)構(gòu)和算法系列棧隊(duì)列優(yōu)先隊(duì)列循環(huán)隊(duì)列設(shè)計(jì)模式系列設(shè)計(jì)模式之策略模式 《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》讀書筆記。 發(fā)布-訂閱模式又叫觀察者模式,它定義了對(duì)象之間的一種一對(duì)多的依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴它的對(duì)象都將得到通知。 例...

    muzhuyu 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part2

    摘要:設(shè)計(jì)模式與開發(fā)實(shí)踐讀書筆記??创宋恼虑?,建議先看設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式在中,已經(jīng)介紹了什么是發(fā)布訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布訂閱模式。 《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》讀書筆記。 看此文章前,建議先看JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part1 在Part1中,已經(jīng)介紹了什么是發(fā)布-訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布-訂閱模式。但是,就Part1...

    Charlie_Jade 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part2

    摘要:設(shè)計(jì)模式與開發(fā)實(shí)踐讀書筆記??创宋恼虑?,建議先看設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式在中,已經(jīng)介紹了什么是發(fā)布訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布訂閱模式。 《JavaScript設(shè)計(jì)模式與開發(fā)實(shí)踐》讀書筆記。 看此文章前,建議先看JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part1 在Part1中,已經(jīng)介紹了什么是發(fā)布-訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布-訂閱模式。但是,就Part1...

    chemzqm 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<