摘要:對象默認(rèn)值填充對象屬性不存在時,使用運算符填充屬性不確定時避免報錯當(dāng)檢索一個的值時,可以通過運算符來避免錯誤。例報錯先檢索是否為,后避免執(zhí)行后面報錯檢測對象中是否存在該屬性,不會查找該對象的原型鏈。
對象 默認(rèn)值填充
對象屬性不存在時,使用||運算符填充:obj.name||"lpp"
object屬性不確定時避免報錯當(dāng)檢索一個undefined的值時,可以通過 &&運算符來避免錯誤。
例:
let obj ={}; obj.name //undefined obj.name.frist //報錯 obj.name && obj.name.frist //先檢索 obj.name是否為undefined ,false后避免執(zhí)行后面報錯hasOwnproperty
檢測對象中是否存在該屬性,不會查找該對象的原型鏈。
最小化使用全局變量在全局創(chuàng)建空的對象
var MYAPP = {}; //讓該空對象作為唯一的全局對象 MYAPP.WriteCode = { //babala }
最小化使用全局變量可以減少全局污染、降低和其他庫框架的重名互相影響
給類型添加方法Object.prototype可以給所有構(gòu)造函數(shù)對象添加方法
Object.prototype.showA = function () { console.log(this.a) } let o = {a : 1}; o.showA(); //1 //屆時,想到了jquery里的封裝 $(el).on("click",function(){ console.log(1) })
嘗試實現(xiàn):
首先對象是一個dom對象,其次聲明了一個on函數(shù),里面兩個參數(shù)分別是事件和匿名函數(shù);
那么先從dom對象入手,給該函數(shù)添加方法必須找到該對象實例的構(gòu)造函數(shù),在控制臺輸入 document.__proto__找到 HTMLElement 再比如
"str".__proto__ : String //這樣就找到該對象實例的構(gòu)造函數(shù) HTMLElement.prototype.on = function(evt,fun){ this[evt] = fun; } el.on("onclick",function(){ console.log("balabla"); })模塊 通過函數(shù)和閉包來構(gòu)造模塊
模塊模式的一般形式是:一個定義了私有變量和函數(shù)的函數(shù),利用閉包創(chuàng)建可以訪問私有變量和函數(shù)的特權(quán)函數(shù);最后返回這個特權(quán)函數(shù),或者把他們保存到一個可訪問的地方。
利:摒棄全局變量減少全局變量污染、安全促使信息隱藏、讓思路清晰明了
例():
//做飯 foodMaterial spice為私有屬性 let cook = function(){ let FoodMaterial = "Tomatoes"; //食材:西紅柿 let Spice = "食用鹽"; //作料:食用鹽 return { buy:function(){ console.log("購買" + FoodMaterial + "和" + "Spice" ); }, doFood:function(){ console.log(`開始做${FoodMaterial}`); } } } let o = cook(); o.buy();//購買Tomatoes和Spice o.doFood();//開始做Tomatoes突然想吃肉,不吃西紅柿了
//做飯 let cook = function(){ let FoodMaterial = "Tomatoes"; //食材:西紅柿 let Spice = "食用鹽"; //作料:食用鹽 return { buy:function(){ console.log("購買" + FoodMaterial + "和" + "Spice" ); }, doFood:function(){ console.log(`開始做${FoodMaterial}`); }, setFood:function(food){ //未傳參則不執(zhí)行賦值 food && (FoodMaterial = food); } } } let o = cook(); o.setFood("肉"); o.buy(); //購買肉和Spice o.doFood();//開始做肉
可以使用傳參的形式改變函數(shù)內(nèi)的變量
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/96721.html
摘要:推薦高性能網(wǎng)站建設(shè)指南高性能網(wǎng)站建設(shè)進(jìn)階指南理由在讀完前幾本書之后我們對前端的性能和自己的代碼的效率已經(jīng)達(dá)到相當(dāng)?shù)母叨攘耍缓笪覀冊诮佑|一些前端工程師的一些精髓。 WEB前端研發(fā)工程師,在國內(nèi)算是一個朝陽職業(yè),這個領(lǐng)域沒有學(xué)校的正規(guī)教育,大多數(shù)人都是靠自己自學(xué)成才。本文主要介紹自己從事web開發(fā)以來(從大二至今)看過的書籍和自己的成長過程,目的是給想了解JavaScript或者是剛...
摘要:推薦高性能網(wǎng)站建設(shè)指南高性能網(wǎng)站建設(shè)進(jìn)階指南理由在讀完前幾本書之后我們對前端的性能和自己的代碼的效率已經(jīng)達(dá)到相當(dāng)?shù)母叨攘耍缓笪覀冊诮佑|一些前端工程師的一些精髓。 WEB前端研發(fā)工程師,在國內(nèi)算是一個朝陽職業(yè),這個領(lǐng)域沒有學(xué)校的正規(guī)教育,大多數(shù)人都是靠自己自學(xué)成才。本文主要介紹自己從事web開發(fā)以來(從大二至今)看過的書籍和自己的成長過程,目的是給想了解JavaScript或者是剛...
摘要:推薦高性能網(wǎng)站建設(shè)指南高性能網(wǎng)站建設(shè)進(jìn)階指南理由在讀完前幾本書之后我們對前端的性能和自己的代碼的效率已經(jīng)達(dá)到相當(dāng)?shù)母叨攘耍缓笪覀冊诮佑|一些前端工程師的一些精髓。 WEB前端研發(fā)工程師,在國內(nèi)算是一個朝陽職業(yè),這個領(lǐng)域沒有學(xué)校的正規(guī)教育,大多數(shù)人都是靠自己自學(xué)成才。本文主要介紹自己從事web開發(fā)以來(從大二至今)看過的書籍和自己的成長過程,目的是給想了解JavaScript或者是剛...
摘要:如果你問一個年輕的前端開發(fā)人員,你在今后的年內(nèi)如何提升自己的能力他可能會說我現(xiàn)在對前端比較熟悉,但我想深入了解,另外現(xiàn)在發(fā)展的很快我也想看一下。再舉一個例子,我會留意身邊的程序員所用的鍵盤。只有少部分的程序員會買高端的靜電容鍵盤,比如。 如果你問一個年輕的前端開發(fā)人員,你在今后的 3 年內(nèi)如何提升自己的能力?他可能會說我現(xiàn)在對 Web 前端比較熟悉,但我想深入了解 AngularJS,...
閱讀 3393·2023-04-26 01:46
閱讀 2918·2023-04-25 20:55
閱讀 5491·2021-09-22 14:57
閱讀 2982·2021-08-27 16:23
閱讀 1720·2019-08-30 14:02
閱讀 2072·2019-08-26 13:44
閱讀 653·2019-08-26 12:08
閱讀 2965·2019-08-26 11:47