摘要:注意類繼承時的問題繼承自方法中對象直接繼承和間接繼承的都會報解決的問題通常是讓對象的手動指向自己將自己的類賦值給對象的屬性基類不會報了原博參考,,,,判斷為
js基礎(chǔ)(二):構(gòu)造函數(shù)與原型
一、常見實例 判斷是否為對象let obj = {} // 1.Object.prototype.toString if (Object.prototype.toString.call(obj) === "[Object Object]") { console.log("對象!") } // 2.constructor if (obj.constructor === Object) { console.log("對象!") } // 3.$.type() if ($.type(obj) === "object") { console.log("對象!") } // 4.$.isPlainObject() , 用于判斷指定參數(shù)是否是一個純粹的對象 if ($.isPlainObject(obj) === "object") { console.log("對象!") }判斷對象是否為空對象
let obj = {} // 1.JSON if (JSON.stringify(obj) === "{}") { console.log("空對象!") } // 2.Object.keys(), es6方法會返回一個由一個給定對象的自身可枚舉屬性組成的數(shù)組 if (Object.keys(obj).length === 0) { console.log("空對象!") } // 3.循環(huán) for (var i in obj) { return true // 不為空 } return false // 空對象 // 4. $.isEmptyObject(), 該對象沒有屬性可以通過for...in迭代 if ($.isEmptyObject(obj)) { console.log("空對象!") }判斷是否為數(shù)組
let arr = [] // 1.Object.prototype.toString if (Object.prototype.toString.call(arr) === "[object Array]") { console.log("數(shù)組!") } // 2.constructor if (arr.constructor === Array) { console.log("數(shù)組!") } // 3.$.type() if ($.type(arr) === "array") { console.log("數(shù)組!") } // 4.Array.isArray, 當(dāng)檢測Array實例時, Array.isArray 優(yōu)于 instanceof,因為Array.isArray能檢測iframes if (arr instanceof Array === true) { console.log("數(shù)組!") } //Array.isArray是ES 5.1推出的,不支持IE6~8。假如不存在 Array.isArray(),則在其他代碼之前運行下面的代碼將創(chuàng)建該方法 if (!Array.isArray) { Array.isArray = function(arg) { return Object.prototype.toString.call(arg) === "[object Array]"; }; } // 5.instanceof if (arr instanceof Array === true) { console.log("數(shù)組!") }判斷是否為數(shù)組是否為空數(shù)組
let arr = [] // 1.length,簡易版,已知為數(shù)組 if (arr && arr.length > 0) { console.log("不為空數(shù)組!") } else { console.log("空數(shù)組!") } // 2.Object.prototype.isPrototypeOf,測試一個對象是否存在于另一個對象的原型鏈上 if (Object.prototype.isPrototypeOf(arr) && Object.keys(arr).length === 0) { console.log("空數(shù)組!") } // 3.Array.isArray,同樣存在兼容問題 if (Array.isArray(arr) && arr.length === 0) { console.log("空數(shù)組!") }判斷字符串為json
function isJSON(str) { if (typeof str == "string") { try { var obj=JSON.parse(str); if(typeof obj == "object" && obj ){ return true; // 可轉(zhuǎn) }else{ return false;// 不可轉(zhuǎn) } } catch() { return false; // 不可轉(zhuǎn) } } console.log("It is not a string!") }判斷字符串是否為數(shù)字
let num = "3" // 1.isNaN, null、空格以及空串會被按照0來處理 if ((!isNaN(num)) && num != null && num != "") { console.log("num為數(shù)字!") } // 2.正則 function isNumber(val) { var regPos = /^d+(.d+)?$/; //非負浮點數(shù) var regNeg = /^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //負浮點數(shù) if(regPos.test(val) || regNeg.test(val)) { return true; } else { return false; } }判斷某值為null或者為undefined
// jquery源碼推薦寫法,省代碼 var obj = {} if(obj.a == null) { //相當(dāng)于obj.a === null || obj.a === undefined }二、五大常見方法 1.typeof
操作符返回一個字符串,表示未經(jīng)計算的操作數(shù)的類型,用于除null、對象和數(shù)組之外的通用類型的判斷方法
原生原型擴展函數(shù),用來精確的區(qū)分數(shù)據(jù)類型,萬能
用于確定JavaScript內(nèi)置對象的類型,并返回小寫形式的類型名稱,萬能
該運算符用于測試構(gòu)造函數(shù)的prototype屬性是否出現(xiàn)在對象的原型鏈中的任何位置,用于檢測引用類型的判斷方法,針對Array和RegExp進行判斷。
該屬性返回對創(chuàng)建此對象的數(shù)組函數(shù)的引用,每個具有原型的對象都會自動獲得constructor屬性。
注意: 類繼承時的問題
?function A(){}; function B(){}; ?A.prototype = new B(); //A繼承自B ?var aObj = new A(); ?alert(aobj.constructor === B) //true; ?alert(aobj.constructor === A) //false; //instanceof方法中對象直接繼承和間接繼承的都會報true alert(aobj instanceof B) //true; alert(aobj instanceof A) // true; //解決construtor的問題通常是讓對象的constructor手動指向自己 aobj.constructor = A; //將自己的類賦值給對象的constructor屬性 alert(aobj.constructor === A) // true; alert(aobj.constructor === B) // false;基類不會報true了;
原博:https://blog.csdn.net/u011684...
參考:typeof,instanceof,$.type][9],[$.isPlainObject(),判斷為json
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/109352.html
摘要:內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,很多語言都會有內(nèi)置的方法,直接可以調(diào)用開發(fā)。根據(jù)語法標(biāo)準(zhǔn)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。強制類型轉(zhuǎn)換大家應(yīng)該都知道。 js基礎(chǔ) - 變量 *大家對js一定不會陌生,入門很簡單(普通入門),很多人通過網(wǎng)絡(luò)資源、書籍、課堂等很多途徑學(xué)習(xí)js,但是有些js基礎(chǔ)的只是往往被大家遺漏,本章就從js變量...
摘要:內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,很多語言都會有內(nèi)置的方法,直接可以調(diào)用開發(fā)。根據(jù)語法標(biāo)準(zhǔn)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。強制類型轉(zhuǎn)換大家應(yīng)該都知道。 js基礎(chǔ) - 變量 *大家對js一定不會陌生,入門很簡單(普通入門),很多人通過網(wǎng)絡(luò)資源、書籍、課堂等很多途徑學(xué)習(xí)js,但是有些js基礎(chǔ)的只是往往被大家遺漏,本章就從js變量...
摘要:邏輯運算判斷一個變量會被當(dāng)做還是內(nèi)置函數(shù)和對象中內(nèi)置了一些函數(shù)和對象,直接可以調(diào)用開發(fā)。根據(jù)提供的內(nèi)置函數(shù)包括和。注意基礎(chǔ)語法提供的內(nèi)置函數(shù)和方法只有這些,像那是瀏覽器提供給我們的。 變量類型和計算 1. 變量類型 js變量類型分為基本類型(或者叫值類型)和引用類型。(按照存儲方式區(qū)分)? 值類型 值類型:Number、String、Boolean、Null、Undefiend;...
摘要:本文章主要總結(jié)一下數(shù)據(jù)類型的識別判斷方法最后封裝一個函數(shù),可以判別所有的類型數(shù)據(jù)類型基本類型類型該類型只有一個值,即小寫,在使用聲明變量但是未對其加以初始化時,這個變量的值就是。 *本文章主要總結(jié)一下js數(shù)據(jù)類型的識別判斷方法tyoeofinstanceofObject.prototype.toString.callconstructor最后封裝一個函數(shù),可以判別所有的類型* 1.數(shù)據(jù)...
閱讀 1060·2021-11-15 18:06
閱讀 2416·2021-10-08 10:04
閱讀 2714·2019-08-28 18:03
閱讀 956·2019-08-26 13:42
閱讀 1983·2019-08-26 11:31
閱讀 2490·2019-08-23 17:13
閱讀 989·2019-08-23 16:45
閱讀 2139·2019-08-23 14:11