摘要:對象篇簡介本身就是一個函數,可用于工具函數,也可以是用于構造對象的函數其次可以添加屬性和方法方法又可以分為靜態方法定義在自身上的和實例方法定義在原型上的工具函數作為工具函數參數可以是任意數據類型,將其轉為對象如果參數是空,,則將其轉換為空對
對象篇 Object簡介
Object本身就是一個函數,可用于工具函數,也可以是用于構造對象的函數;其次Object可以添加屬性和方法;方法又可以分為靜態方法(定義在自身上的)和實例方法(定義在Object原型上的)
工具函數作為工具函數:參數可以是任意數據類型,將其轉為對象;如果參數是空,null,undefined,則將其轉換為空對象;如果參數是原始值,則返回包裝類對象;如果參數是對象則返回原對象;
利用這一特點可以構建一個判斷參數是否為對象的函數
function isObject(target) { return target === Object(target); }作為構造函數
作為構造函數:生成一個對象,在下篇中著重介紹
var obj = new Object(); //{}部分靜態方法
Object的靜態方法:
keys()與hasOwnPropertyNames(),其都是將對象的自身屬性(不包含繼承部分)以數組形式返回;其唯一的區別是:對于不可枚舉的屬性,keys不會輸出,而hasOwnPropertyNames則會輸出,例如數組又一個不可枚舉的length屬性
var arr = [1, 2, 3]; //var arr = new Object("123"); 輸出也是一樣的 Object.keys(arr); //["1", "2", "3"] Object.getOwnPropertyNames(arr); //["1", "2", "3", "length"]
借keys方法可以輸出對象屬性的個數,Object.keys(obj).length
剩余方法中篇記錄
部分實例方法
Object的實例方法:
Object.prototype.valueOf()
valueOf()返回對象的值,默認返回對象本身
var obj = {a : 1}; obj.valueOf() === obj; //true
Object.prototype().toString()
toString()返回類型字符串,默認值為[object Object],第一個object為類型,第二個是構造函數Object,我們可以利用第二個構造函數來判斷數據的類型
Object.prototype.toString.call([]); //[object Array] Object.prototype.toString.call({}); //[object Object] Object.prototype.toString.call(123); //[object Number]
改進成函數:
var type = function (target) { var str = Object.prototype.toString.call(target); return str.slice(8, -1); }; ["Null", "String", "Boolean", "Number", "Undefined", "Object", "Function", "Array", "Window" , "RegExp", "Date"].forEach(function (elem) { type["is" + elem] = function (target) { return type(target) == elem; } }); type.isNumber(123); //true type.isObject({}); //true
Object.prototype.toLocaleString()與toString()結果一樣,不同的是對于數組,日期,數字類型的的包裝對象,返回地方化的字符串輸出格式
Object.prototype.hasOwnProperty(),用于判斷參數是否為對象的屬性,返回一個布爾值
var obj = {a : 1}; obj.hasOwnProperty("a"); //true
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/98132.html
摘要:簡析簡介,是一種數據格式而不是編程語言,它和并沒有從屬關系,任何編程語言都可以使用語法規則分為三類簡單值與語法相同,可以在中表示字符串,數值,布爾值和,但是其不支持數值字符串對象鍵值和鍵名都得用雙引號數組解析和序列化目標對象,過濾器,字符串 JSON簡析 1.簡介 JSON,是一種數據格式而不是編程語言,它和JavaScrip并沒有從屬關系,任何編程語言都可以使用JSON; 2.語法...
摘要:源碼學習之用于合并對象,可選擇是否深復制。盡管官方文檔明確指出第一個參數是的調用情況并不支持,但是這個版本的源碼中,判斷第一個參數的類型雖有限定是類型,但卻未對其值真假加以限定。調用方式源碼和指向同一個函數,在函數內部,對調用情況進行區分。 jQuery源碼學習之extend $.extend用于合并對象,可選擇是否深復制。使用時,第一個參數為合并后的對象。如果要進行深拷貝,則參數1為...
摘要:繼承是面向對象編程語言中的一個重要的概念,繼承可以使得子類具有父類的屬性和方法或者重新定義追加屬性和方法等。但是在中沒有類的概念,是基于原型的語言,所以這就意味著對象可以直接從其他對象繼承。 繼承是面向對象編程語言中的一個重要的概念,繼承可以使得子類具有父類的屬性和方法或者重新定義、追加屬性和方法等。但是在Javascript中沒有類的概念,是基于原型的語言,所以這就意味著對象可以直接...
摘要:先實現一個簡單的數據劫持。思路遍歷對象的每個屬性,為每個屬性掛上監聽函數即利用進行元編程考慮屬性的子屬性的監聽先上代碼你訪問了你設置了新的其中涉及的知識點如果屬性值還是對象,則遞歸繼續 先實現一個簡單的數據劫持。思路: 遍歷對象的每個屬性,為每個屬性掛上監聽函數(即利用Object.defineProperty進行元編程); 考慮屬性的子屬性的監聽;先上代碼: function ...
摘要:原型要掌握這三者之間的關系,通過代碼例子記錄一下自身屬性的這里就是通過代碼看一下做了什么默認情況下,將的所有屬性包括繼承的賦值給有什么東西呢自己的原型鏈,添加一個屬性,用來指明對象的誰構造的自身全部屬性,這邊構建一個空對象原型,所以沒有自有 原型 要掌握這三者之間的關系prototype,constructor,__proto__通過代碼例子記錄一下 function F() { ...
閱讀 3228·2021-11-15 11:37
閱讀 2449·2021-09-29 09:48
閱讀 3814·2021-09-22 15:55
閱讀 3014·2021-09-22 10:02
閱讀 2636·2021-08-25 09:40
閱讀 3225·2021-08-03 14:03
閱讀 1691·2019-08-29 13:11
閱讀 1570·2019-08-29 12:49