如何用原生js封裝一個(gè)屬于自己的插件

今天介紹一下怎么寫屬于自己的插件,建議看之前溫習(xí)一下面向?qū)ο螅?br> 我就寫個(gè)簡單的重置樣式的插件册赛,話不多說先上代碼;

//SetStyles.js
(function(win, doc) {
    var defaultSettings = {
        color: "red",
        background: "blue",
        border: "2px solid #000",
        fontSize:"30px",
        textAlign:"center",
        width:"200px",
        borderRadius:"5px"
    };

    function SetStyles(options) {
        var self = this;
        //沒傳配置項(xiàng)自己丟錯(cuò)
        if(!options) {
            throw new Error("請傳入配置參數(shù)");
        }
        self = Object.assign(self, defaultSettings, options);
        
        self.container = doc.querySelector(self.container) || doc.querySelectorAll(self.container);
        self._changeStyles();
    }

    SetStyles.prototype = {
        _changeStyles: function() {
            var self = this;
            for(var pro in self) {
                if(pro == "container") {
                    continue;
                }
                if(pro == 'text' && typeof self[pro]== 'string') {
                    self.container.innerText = self[pro];
                    continue;
                }else if(pro == 'text' && typeof self[pro]== 'function'){
                    self.container.innerText = self[pro]();
                    continue;
                }
                self.container.style[pro] = self[pro];
            }
        }
    }
    win.SetStyles = SetStyles;
})(window, document)
    //調(diào)用
    var a = new SetStyles({
            container:"#test",
            background:"#fff",
            textAlign:"center",
            text:function(){
                return "我是文本";
            }
        });
    //text參數(shù)格式字符串或者函數(shù)
    //container用的querySelectAll方法,參數(shù)一致
    //其他css參數(shù)為字符串

我的這份代碼應(yīng)該足夠簡單扼睬,看不懂的說明基礎(chǔ)還不夠哦悴势,自己敲一敲,有問題的地方,自己console.log一下吧特纤。
首先定義下一默認(rèn)的參數(shù)defaultSettings
然后寫個(gè)構(gòu)造函數(shù),里面為什么要用Object.assign合并對象粪躬,因?yàn)槟J(rèn)配置里有的你不一定全都寫昔穴,不寫的就默認(rèn)為默認(rèn)參數(shù),有的就選擇你寫的參數(shù)朋魔,所以options放在后面卿操;
最后把方法寫在原型里。
方法一般寫在原型里扇雕,屬性寫在構(gòu)造函數(shù)里。
大家應(yīng)該都能看的懂這段代碼的功能镶奉,重置css樣式哨苛,和jquery的css()函數(shù)類似。
但是不推薦大家用這個(gè)玻侥,畢竟遵循原則亿蒸,盡量少用js去操作dom,畢竟這種代價(jià)是很昂貴的姑食,我寫這個(gè)只是為了讓大家了解一下如何封裝插件音半,要去更改css樣式灰蛙,不如多寫幾個(gè)類,要用那種樣式物延,換個(gè)類名就行仅父。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耗溜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子抖拴,更是在濱河造成了極大的恐慌阿宅,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛉鹿,死亡現(xiàn)場離奇詭異妖异,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)他膳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進(jìn)店門矩乐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來回论,“玉大人傀蓉,你說我怎么就攤上這事葬燎∑拙唬” “怎么了?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長李请。 經(jīng)常有香客問我厉熟,道長揍瑟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任岛琼,我火速辦了婚禮纪蜒,結(jié)果婚禮上纯续,老公的妹妹穿的比我還像新娘。我一直安慰自己猬错,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逢唤,像睡著了一般鳖藕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上院尔,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天,我揣著相機(jī)與錄音喉誊,去河邊找鬼拼苍。 笑死衣赶,一個(gè)胖子當(dāng)著我的面吹牛串慰,可吹牛的內(nèi)容都是我干的绞灼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼幻林,長吁一口氣:“原來是場噩夢啊……” “哼贞盯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沪饺,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤躏敢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后整葡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體件余,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了告丢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片岖免。...
    茶點(diǎn)故事閱讀 38,566評論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡栗精,死狀恐怖鹿寨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤嚼贡,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布叮盘,位于F島的核電站,受9級特大地震影響丙唧,放射性物質(zhì)發(fā)生泄漏溪厘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一彩扔、第九天 我趴在偏房一處隱蔽的房頂上張望贾惦。 院中可真熱鬧,春花似錦兢卵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜒茄。三九已至腹缩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背黑忱。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工抚吠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人萧朝。 一個(gè)月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓何址,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 作為一個(gè)前端er阿弃,如果不會寫一個(gè)小插件,都不好意思說自己是混前端界的入愧。寫還不能依賴jquery之類的工具庫巩步,否則裝...
    綽號陸拾柒閱讀 46,068評論 42 261
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,730評論 25 707
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,734評論 1 92
  • 文/sherry 我出生在一個(gè)內(nèi)地貧困縣赠涮,這里炸裆,我從小接受的教育就是學(xué)習(xí)改變命運(yùn)。那時(shí)候的我也不知道為什么要改變命...
    劉小云愛自由閱讀 309評論 1 1
  • 一滴荷露涼 一盞明前香 一朝一夕琴一張 一段舞袖揚(yáng) 一襲柔風(fēng)裳 一枕瓦上霜 一詩一畫墨一方 一念慕宋唐
    五月慕晴閱讀 234評論 3 3