摘要:注每個(gè)內(nèi)置對(duì)象都是原生對(duì)象,一個(gè)內(nèi)置的構(gòu)造函數(shù)是一個(gè)內(nèi)置的對(duì)象,也是一個(gè)構(gòu)造函數(shù)。從對(duì)象返回月份。以毫秒設(shè)置對(duì)象。刪除數(shù)組的第一個(gè)元素,返回值是刪除的元素。對(duì)象屬性創(chuàng)建該正則對(duì)象的構(gòu)造函數(shù)。對(duì)象當(dāng)以非構(gòu)造函數(shù)形式被調(diào)用時(shí),等同于。
內(nèi)置對(duì)象與原生對(duì)象
內(nèi)置(Build-in)對(duì)象與原生(Naitve)對(duì)象的區(qū)別在于:前者總是在引擎初始化階段就被創(chuàng)建好的對(duì)象,是后者的一個(gè)子集;而后者包括了一些在運(yùn)行過(guò)程中動(dòng)態(tài)創(chuàng)建的對(duì)象。
原生對(duì)象(New后的對(duì)象)ECMA-262 把原生對(duì)象(native object)定義為“獨(dú)立于宿主環(huán)境的 ECMAScript 實(shí)現(xiàn)提供的對(duì)象”。包括如下:
Object、Function、Array、String、Boolean、Number、Date、RegExp、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError、ActiveXObject(服務(wù)器方面)、Enumerator(集合遍歷類(lèi))、RegExp(正則表達(dá)式)
由此可以看出,簡(jiǎn)單來(lái)說(shuō),原生對(duì)象就是 ECMA-262 定義的類(lèi)(引用類(lèi)型)。
內(nèi)置對(duì)象(不需要New)來(lái)源: http://es5.github.com/#x4.3.6
定義:由ECMAScript實(shí)現(xiàn)提供的對(duì)象,獨(dú)立于宿主環(huán)境,在一個(gè)腳本程序執(zhí)行的開(kāi)始處。
注:每個(gè)內(nèi)置對(duì)象(built-in object)都是原生對(duì)象(Native Object),一個(gè)內(nèi)置的構(gòu)造函數(shù)是一個(gè)內(nèi)置的對(duì)象,也是一個(gè)構(gòu)造函數(shù)。
來(lái)源:http://es5.github.io/#x4.3.7
舉個(gè)栗子:
Native objects: Object (constructor), Date, Math, parseInt, eval。 string 方法比如 indexOf 和 replace, array 方法, ... Host objects (假定是瀏覽器環(huán)境): window, document, location, history, XMLHttpRequest, setTimeout, getElementsByTagName, querySelectorAll, ...
ECMA-262][2 只定義了兩個(gè)新的內(nèi)置對(duì)象,即 Global 和 Math (它們也是原生對(duì)象,根據(jù)定義,每個(gè)內(nèi)置對(duì)象都是原生對(duì)象)。
以下是ECMA-262定義的內(nèi)置對(duì)象(built-in):
global、Object、Function、Array、String、Boolean、Number、Math、Date、RegExp、JSON、Error對(duì)象(Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError 和URIError)
我們也可以修改內(nèi)置對(duì)象的原型
if (!Array.prototype.forEach) { Array.prototype.forEach = function(fn){ for ( var i = 0; i < this.length; i++ ) { fn( this[i], i, this ); } }; } ["a", "b", "c"].forEach(function(value, index, array){ assert( value, "Is in position " + index + " out of " + (array.length - 1) ); });
以上代碼將輸出:
PASS Is in position 0 out of 2 PASS Is in position 1 out of 2 PASS Is in position 2 out of 2
注意:擴(kuò)展原型是很危險(xiǎn)的:
Object.prototype.keys = function(){ var keys = []; for ( var i in this ) keys.push( i ); return keys; }; var obj = { a: 1, b: 2, c: 3 }; assert( obj.keys().length == 3, "We should only have 3 properties." ); delete Object.prototype.keys;
輸出: FAIL We should only have 3 properties.
如果不是有特殊需要而去擴(kuò)展原生對(duì)象和原型(prototype)的做法是不好的
//不要這樣做 Array.prototype.map = function() { // code };
除非這樣做是值得的,例如,向一些舊的瀏覽器中添加一些ECMAScript5中的方法。
在這種情況下,我們一般這樣做:
用原型擴(kuò)展對(duì)象
對(duì)js原生對(duì)象的擴(kuò)展無(wú)非就是往prototype里注冊(cè),例如,我們可以往String對(duì)象里擴(kuò)展ltrim,rtrim等方法。js每個(gè)對(duì)象都繼承自Object,并且,對(duì)象和其他屬性都通過(guò)prototype對(duì)象來(lái)繼承。通過(guò)prototype對(duì)象,我們可以擴(kuò)展任何對(duì)象,包括內(nèi)建的對(duì)象,如String和Date:
String對(duì)象的擴(kuò)展Date對(duì)象的擴(kuò)展
getDaysInMonth:獲取某月有多少天
Date.getDaysInMonth = function (year, month) { var days = 0; switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31 break; case 4: case 6: case 9: case 11: days = 30; break; case 2: if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) days = 29; else days = 28; break; } return days; } if (typeof Date.prototype.format == "undefined") { Date.prototype.format = function (mask) { var d = this; var zeroize = function (value, length) { if (!length) length = 2; value = String(value); for (var i = 0, zeros = ""; i < (length - value.length); i++) { zeros += "0"; } return zeros + value; }; return mask.replace(/"[^"]*"|"[^"]*"|(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])1?|[lLZ])/g, function ($0) { switch ($0) { case "d": return d.getDate(); case "dd": return zeroize(d.getDate()); case "ffffd": return ["Sun", "Mon", "Tue", "Wed", "Thr", "Fri", "Sat"][d.getDay()]; case "ffffdd": return ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][d.getDay()]; case "M": return d.getMonth() + 1; case "MM": return zeroize(d.getMonth() + 1); case "MMM": return ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"][d.getMonth()]; case "MMMM": return ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"][d.getMonth()]; case "yy": return String(d.getFullYear()).substr(2); case "yyyy": return d.getFullYear(); case "h": return d.getHours() % 12 || 12; case "hh": return zeroize(d.getHours() % 12 || 12); case "H": return d.getHours(); case "HH": return zeroize(d.getHours()); case "m": return d.getMinutes(); case "mm": return zeroize(d.getMinutes()); case "s": return d.getSeconds(); case "ss": return zeroize(d.getSeconds()); case "l": return zeroize(d.getMilliseconds(), 3); case "L": var m = d.getMilliseconds(); if (m > 99) m = Math.round(m / 10); return zeroize(m); case "tt": return d.getHours() < 12 ? "am" : "pm"; case "TT": return d.getHours() < 12 ? "AM" : "PM"; case "Z": return d.toUTCString().match(/[A-Z]+$/); // Return quoted strings with the surrounding quotes removed default: return $0.substr(1, $0.length - 2); } }); }; }使用原生js實(shí)現(xiàn)復(fù)制對(duì)象及擴(kuò)展
jQuery的extend()方法能很方便的實(shí)現(xiàn)擴(kuò)展對(duì)象方法,這里要實(shí)現(xiàn)的是:使用原生js實(shí)現(xiàn)復(fù)制對(duì)象,擴(kuò)展對(duì)象,類(lèi)似jQuery中的extend()方法
var obj1 = { name : "trigkit4", age : 22 }; var obj2 = { name : "frank", age : 21, speak : function(){ alert("hi, I"m + name "); } }; var obj3 ={ age : 20 }; function cloneObj(oldObj) { //復(fù)制對(duì)象方法 if (typeof(oldObj) != "object") return oldObj; if (oldObj == null) return oldObj; var newObj = Object(); for (var i in oldObj) newObj[i] = cloneObj(oldObj[i]); return newObj; } function extendObj() { //擴(kuò)展對(duì)象 var args = arguments;//將傳遞過(guò)來(lái)的參數(shù)數(shù)組賦值給args變量 if (args.length < 2) return; var temp = cloneObj(args[0]); //調(diào)用復(fù)制對(duì)象方法 for (var n = 1; n < args.length; n++) { for (var i in args[n]) { temp[i] = args[n][i]; } } return temp; } var obj =extendObj(obj1,obj2,obj3); console.log(obj);//{ name: "frank", age: 20, speak: [Function] } console.log(obj1);//{ name: "trigkit4", age: 22 } console.log(obj2);//{ name: "frank", age: 21, speak: [Function] } console.log(obj3);//{ age: 20 }es5-safe 模塊
es5-safe 模塊里,僅擴(kuò)展了可以較好實(shí)現(xiàn)的可以安全使用的部分方法,包括:
Function.prototype.bind Object.create Object.keys Array.isArray Array.prototype.forEach Array.prototype.map Array.prototype.filter Array.prototype.every Array.prototype.some Array.prototype.reduce Array.prototype.reduceRight Array.prototype.indexOf Array.prototype.lastIndexOf String.prototype.trim Date.now
對(duì)象的創(chuàng)建詳情:http://es5.github.io/
JavaScript 支持四種類(lèi)型的對(duì)象:內(nèi)部對(duì)象、生成的對(duì)象、宿主給出的對(duì)象(如 Internet 瀏覽器中的 window 和 document)以及 ActiveX 對(duì)象(外部組件)。
Microsoft Jscript 提供了 11 個(gè)內(nèi)部(或“內(nèi)置”)對(duì)象。它們是Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、Error 以及 String 對(duì)象。每一個(gè)對(duì)象有相關(guān)的方法和屬性,
JavaScript中對(duì)象的創(chuàng)建有以下幾種方式:
(1)使用內(nèi)置對(duì)象 (2)使用JSON符號(hào) (3)自定義對(duì)象構(gòu)造一、使用內(nèi)置對(duì)象
JavaScript可用的內(nèi)置對(duì)象可分為兩種: 1,JavaScript語(yǔ)言原生對(duì)象(語(yǔ)言級(jí)對(duì)象),如String、Object、Function等; 2,JavaScript運(yùn)行期的宿主對(duì)象(環(huán)境宿主級(jí)對(duì)象),如window、document、body等。內(nèi)置對(duì)象列表
Array Boolean Date Error EvalError Function Infinity JSON Map Math NaN Number Object ParallelArray Promise Proxy RegExp Set String Symbol SyntaxError Uint32Array WeakSet decodeURI decodeURIComponent() encodeURI() encodeURIComponent() escape()已廢棄 eval() isFinite() isNaN() null parseFloat parseInt undefined
自定義對(duì)象構(gòu)造以上資料來(lái)源于:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects#.E5.9F.BA.E6.9C.AC.E5.AF.B9.E8.B1.A1
創(chuàng)建高級(jí)對(duì)象構(gòu)造有兩種方式:使用“this”關(guān)鍵字構(gòu)造、使用原型prototype構(gòu)造
Date對(duì)象 get系列方法getDate() 從 Date 對(duì)象返回一個(gè)月中的某一天 (1 ~ 31)。 getDay() 從 Date 對(duì)象返回一周中的某一天 (0 ~ 6)。 getMonth() 從 Date 對(duì)象返回月份 (0 ~ 11)。 getFullYear() 從 Date 對(duì)象以四位數(shù)字返回年份。注意不要使用getYear()。 getHours() 返回 Date 對(duì)象的小時(shí) (0 ~ 23)。 getMinutes() 返回 Date 對(duì)象的分鐘 (0 ~ 59)。 getSeconds() 返回 Date 對(duì)象的秒數(shù) (0 ~ 59)。 getMilliseconds() 返回 Date 對(duì)象的毫秒(0 ~ 999)。 getTime() 返回 1970 年 1 月 1 日至今的毫秒數(shù)。 getTimezoneOffset() 返回本地時(shí)間與格林威治標(biāo)準(zhǔn)時(shí)間 (GMT) 的分鐘差。 getUTCDate() 根據(jù)世界時(shí)從 Date 對(duì)象返回月中的一天 (1 ~ 31)。 getUTCDay() 根據(jù)世界時(shí)從 Date 對(duì)象返回周中的一天 (0 ~ 6)。 getUTCMonth() 根據(jù)世界時(shí)從 Date 對(duì)象返回月份 (0 ~ 11)。 getUTCFullYear() 根據(jù)世界時(shí)從 Date 對(duì)象返回四位數(shù)的年份。 getUTCHours() 根據(jù)世界時(shí)返回 Date 對(duì)象的小時(shí) (0 ~ 23)。 getUTCMinutes() 根據(jù)世界時(shí)返回 Date 對(duì)象的分鐘 (0 ~ 59)。 getUTCSeconds() 根據(jù)世界時(shí)返回 Date 對(duì)象的秒鐘 (0 ~ 59)。 getUTCMilliseconds() 根據(jù)世界時(shí)返回 Date 對(duì)象的毫秒(0 ~ 999)。set系列方法
setDate() 設(shè)置 Date 對(duì)象中月的某一天 (1 ~ 31)。 setMonth() 設(shè)置 Date 對(duì)象中月份 (0 ~ 11)。 setFullYear() 設(shè)置 Date 對(duì)象中的年份(四位數(shù)字)。注意不要使用setYear()方法。 setHours() 設(shè)置 Date 對(duì)象中的小時(shí) (0 ~ 23)。 setMinutes() 設(shè)置 Date 對(duì)象中的分鐘 (0 ~ 59)。 setSeconds() 設(shè)置 Date 對(duì)象中的秒鐘 (0 ~ 59)。 setMilliseconds() 設(shè)置 Date 對(duì)象中的毫秒 (0 ~ 999)。 setTime() 以毫秒設(shè)置 Date 對(duì)象。 setUTCDate() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中月份的一天 (1 ~ 31)。 setUTCMonth() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的月份 (0 ~ 11)。 setUTCFullYear() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的年份(四位數(shù)字)。 setUTCHours() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的小時(shí) (0 ~ 23)。 setUTCMinutes() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的分鐘 (0 ~ 59)。 setUTCSeconds() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的秒鐘 (0 ~ 59)。 setUTCMilliseconds() 根據(jù)世界時(shí)設(shè)置 Date 對(duì)象中的毫秒 (0 ~ 999)。toString系列方法
toString() 把 Date 對(duì)象轉(zhuǎn)換為字符串,toString()總是返回一個(gè)用美式英語(yǔ)表達(dá)的字符串。 toTimeString() 把 Date 對(duì)象的時(shí)間部分轉(zhuǎn)換為字符串。 toDateString() 把 Date 對(duì)象的日期部分轉(zhuǎn)換為字符串。 toUTCString() 根據(jù)世界時(shí),把 Date 對(duì)象轉(zhuǎn)換為字符串。 toLocaleString() 根據(jù)本地時(shí)間格式,把 Date 對(duì)象轉(zhuǎn)換為字符串。 toLocaleTimeString() 根據(jù)本地時(shí)間格式,把 Date 對(duì)象的時(shí)間部分轉(zhuǎn)換為字符串。 toLocaleDateString() 根據(jù)本地時(shí)間格式,把 Date 對(duì)象的日期部分轉(zhuǎn)換為字符串。Array對(duì)象 屬性
constructor 指定創(chuàng)建對(duì)象原型的函數(shù)。 index 如果數(shù)組是通過(guò)正則表達(dá)式匹配創(chuàng)建的,比配是字符串的下標(biāo)索引為0. input 如果數(shù)組是通過(guò)正則表達(dá)式匹配創(chuàng)建的,返回原始的字符串。 length長(zhǎng)度 返回?cái)?shù)組中元素個(gè)數(shù). prototype 允許為所有對(duì)象附加屬性.方法
這些方法可以改變數(shù)組自身:
pop 移除數(shù)組的最后一個(gè)元素,返回值是被刪除的元素。 push 在數(shù)組的末尾添加一個(gè)或者多個(gè)元素,返回值是新的數(shù)組的長(zhǎng)度。 reverse 顛倒數(shù)組中元素的順序,原先第一個(gè)元素現(xiàn)在變成最后一個(gè),同樣原先的最后一個(gè)元素變成了現(xiàn)在的第一個(gè),也就是數(shù)組的索引發(fā)生了變化。 shift 刪除數(shù)組的第一個(gè)元素,返回值是刪除的元素。 sort 對(duì)數(shù)組中的元素進(jìn)行排序。 splice 添加或刪除數(shù)組中的一個(gè)或多個(gè)元素。 unshift 添加一個(gè)或者多個(gè)元素在數(shù)組的開(kāi)頭,返回值是新的數(shù)組的長(zhǎng)度。Accessor 方法
這些過(guò)程不改變數(shù)組自身
concat 返回一個(gè)包含此數(shù)組和其他數(shù)組和/或值的結(jié)合的新數(shù)組 indexOf 返回第一個(gè)與給定參數(shù)相等的數(shù)組元素的索引,沒(méi)有找到則返回-1。 join 將所有的數(shù)組元素連接成一個(gè)字符串。 lastIndexOf 返回在數(shù)組中搜索到的與給定參數(shù)相等的元素的最后(最大)索引。 slice 返回?cái)?shù)組中的一段。 toSource Returns an array literal representing the specified array; you can use this value to create a new array. Overrides the Object.toSource method. toString 返回代表該數(shù)組及其元素的字符,重寫(xiě)Object.toString 過(guò)程. valueOf Returns the primitive value of the array. Overrides the Object.valueOf method.循環(huán)(迭代)過(guò)程
filter 對(duì)數(shù)組中的每一個(gè)元素調(diào)用參數(shù)中指定的過(guò)濾函數(shù),并將對(duì)于過(guò)濾函數(shù)返回值為true的那些數(shù)組元素集合為新的數(shù)組返回。 forEach 對(duì)數(shù)組的每一個(gè)元素依次調(diào)用參數(shù)中指定的函數(shù)。 every 如果數(shù)組中每一個(gè)元素都滿(mǎn)足參數(shù)中提供的測(cè)試函數(shù),則返回真。 map Creates a new array with the results of calling a provided function on every element in this array. some 如果數(shù)組中至少有一個(gè)元素滿(mǎn)足參數(shù)函數(shù)的測(cè)試,則返回true。總結(jié):
改變?cè)瓟?shù)組的方法:pop()、push()、reverse()、shift()、sort()、splice()、unshift() 不改變?cè)瓟?shù)組的方法:concat()、join()、slice()、toString()Boolean 屬性
Boolean.length 長(zhǎng)度屬性,值為1. Boolean.prototype 代表Boolean構(gòu)造器的原型.方法
Boolean.prototype.toSource() Boolean.prototype.toString() Boolean.prototype.valueOf()String 對(duì)象 屬性
String.length String.prototype方法:
charAt() 方法可返回指定位置的字符。stringObject.charAt(index) charCodeAt() 方法可返回指定位置的字符的 Unicode 編碼。這個(gè)返回值是 0 – 65535 之間的整數(shù)。 stringObject.charCodeAt(index) concat() 方法用于連接兩個(gè)或多個(gè)字符串。 stringObject.concat(stringX, stringX, …, stringX) indexOf() 方法可返回某個(gè)指定的字符串值在字符串中首次出現(xiàn)的位置。 stringObject.indexOf(searchvalue, fromindex) lastIndexOf() 方法可返回一個(gè)指定的字符串值最后出現(xiàn)的位置,在一個(gè)字符串中的指定位置從后向前搜索。 localeCompare():用本地特定的順序來(lái)比較兩個(gè)字符串stringObject.localeCompare(target) match() 方法可在字符串內(nèi)檢索指定的值,或找到一個(gè)或多個(gè)正則表達(dá)式的匹配。 該方法類(lèi)似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。 stringObject.match(regexp) replace() 方法用于在字符串中用一些字符替換另一些字符,或替換一個(gè)與正則表達(dá)式匹配的子串。stringObject.replace(regexp/substr, replacement) search() 方法用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串。 stringObject.search(regexp) slice() 方法可提取字符串的某個(gè)部分,并以新的字符串返回被提取的部分。 stringObject.slice(start, end) substring()不推薦使用,建議使用slice()替代。 substr()不推薦使用,建議使用slice()替代。 toLocaleLowerCase()不推薦使用,只在土耳其語(yǔ)等少數(shù)語(yǔ)種中有用,建議使用toLowerCase()替代。 toLocaleUpperCase()不推薦使用,只在土耳其語(yǔ)等少數(shù)語(yǔ)種中有用,建議使用toUpperCase()替代。 toLowerCase() 方法用于把字符串轉(zhuǎn)換為小寫(xiě)。 toUpperCase() 方法用于把字符串轉(zhuǎn)換為大寫(xiě)。
注意:String 對(duì)象的方法 slice()、substring() 和 substr() 都可返回字符串的指定部分。強(qiáng)烈建議在所有場(chǎng)合都使用 slice() 方法。
RegExp對(duì)象 屬性RegExp.prototype.constructor 創(chuàng)建該正則對(duì)象的構(gòu)造函數(shù)。 RegExp.prototype.global 是否開(kāi)啟全局匹配,也就是匹配目標(biāo)字符串中所有可能的匹配項(xiàng),而不是只進(jìn)行第一次匹配。 RegExp.prototype.ignoreCase 在匹配字符串時(shí)是否要忽略字符的大小寫(xiě)。 RegExp.prototype.lastIndex 下次匹配開(kāi)始的字符串索引位置。 RegExp.prototype.multiline 是否開(kāi)啟多行模式匹配(影響 ^ 和 $ 的行為) RegExp.prototype.source 正則對(duì)象的源模式文本。方法
RegExp.prototype.exec() 在目標(biāo)字符串中執(zhí)行一次正則匹配操作。 RegExp.prototype.test() 測(cè)試當(dāng)前正則是否能匹配目標(biāo)字符串。 RegExp.prototype.toString() 返回一個(gè)字符串,其值為該正則對(duì)象的字面量形式。覆蓋了Object.prototype.toString() 方法。Object對(duì)象
當(dāng)以非構(gòu)造函數(shù)形式被調(diào)用時(shí),Object 等同于 new Object()。
屬性或方法Object的每個(gè)實(shí)例都具有共同的基本屬性和方法
屬性或者方法 | 說(shuō)明 |
---|---|
constructor | 指向創(chuàng)建當(dāng)前對(duì)象的構(gòu)造函數(shù) |
hasOwnProperty(name) | 檢測(cè)給定屬性name在實(shí)例對(duì)象(不是原型對(duì)象)中是否存在。name以字符串形式指定 |
isPropertyOf(object) | 檢測(cè)傳入的對(duì)象object是否該方法調(diào)用者的原型對(duì)象。一般格式:Class.prototype.isPropertyOf(object) |
propertyIsEnumerable(pr) | 檢測(cè)屬性pr能否用for-in循環(huán)枚舉。屬性pro用字符串形式指定 |
toLocaleString() | 返回對(duì)象的字符串表示。與地區(qū)和環(huán)境對(duì)應(yīng) |
toString() | 返回對(duì)象的字符串表示 |
valueOf() | 返回對(duì)象的字符串、數(shù)值或布爾值表示 |
Object.create(prototype, descriptors) 以指定的原型創(chuàng)建對(duì)象,并且可以(可選)的設(shè)置對(duì)象的屬性 Object.defineProperty(object, propertyname, descriptor) 對(duì)指定的對(duì)象的一個(gè)屬性設(shè)置豐富的值控制 Object.defineProperties(object, descriptors) 對(duì)指定的對(duì)象的一組屬性提供豐富的值控制 Object.getOwnPropertyDescriptor(object, propertyname) 返回屬性的定義 Object.getOwnPropertyNames(object) 返回所有屬性的名稱(chēng),哪怕說(shuō)是不能枚舉的屬性 Object.preventExtensions(object) 防止新的屬性添加到對(duì)象 Object.isExtensible(object) 是否可添加屬性到對(duì)象 Object.seal(object) 阻止向指定對(duì)象添加新屬性或刪除現(xiàn)有屬性 Object.freeze(object) 防止現(xiàn)有屬性和屬性值的修改,并防止新特性的添加。 Object.isFrozen(object) 檢查當(dāng)前對(duì)象是否已凍結(jié) Object.getPrototypeOf(object) 返回指定對(duì)象的原型全局屬性和方法 全局方法 全局屬性
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85582.html
摘要:使用新的易用的類(lèi)定義,歸根結(jié)底也是要?jiǎng)?chuàng)建構(gòu)造函數(shù)和修改原型。首先,它把構(gòu)造函數(shù)當(dāng)成單獨(dú)的函數(shù)且包含類(lèi)屬性集。該節(jié)點(diǎn)還儲(chǔ)存了指向父類(lèi)的指針引用,該父類(lèi)也并儲(chǔ)存了構(gòu)造函數(shù),屬性集和及父類(lèi)引用,依次類(lèi)推。 原文請(qǐng)查閱這里,略有刪減,本文采用知識(shí)共享署名 4.0 國(guó)際許可協(xié)議共享,BY Troland。 本系列持續(xù)更新中,Github 地址請(qǐng)查閱這里。 這是 JavaScript 工作原理的第...
摘要:使用新的易用的類(lèi)定義,歸根結(jié)底也是要?jiǎng)?chuàng)建構(gòu)造函數(shù)和修改原型。首先,它把構(gòu)造函數(shù)當(dāng)成單獨(dú)的函數(shù)且包含類(lèi)屬性集。該節(jié)點(diǎn)還儲(chǔ)存了指向父類(lèi)的指針引用,該父類(lèi)也并儲(chǔ)存了構(gòu)造函數(shù),屬性集和及父類(lèi)引用,依次類(lèi)推。 原文請(qǐng)查閱這里,略有刪減,本文采用知識(shí)共享署名 4.0 國(guó)際許可協(xié)議共享,BY Troland。 本系列持續(xù)更新中,Github 地址請(qǐng)查閱這里。 這是 JavaScript 工作原理的第...
摘要:我們快速地看一下擴(kuò)展原生的動(dòng)畫(huà)內(nèi)置的微模板國(guó)際化的支持?jǐn)U展有一個(gè)叫做事件的概念。內(nèi)置的微模板字符串冗長(zhǎng)而繁瑣。比如這段與對(duì)應(yīng)的微模板比較在中,任何接受的方法同樣接受表達(dá)式。 目前,jQuery是事實(shí)上的操作文檔對(duì)象模型(DOM)的庫(kù)。它可以與流行的客戶(hù)端MV*框架結(jié)合使用,并且擁有大量的插件與大型的社區(qū)。開(kāi)發(fā)者對(duì)于Javascript的興趣與日俱增的同時(shí),很多人開(kāi)始好奇,原生的API是...
摘要:若自定義元素標(biāo)簽名稱(chēng)不可用則摒棄??傊远x元素讓開(kāi)發(fā)者的代碼更易理解和維護(hù),并分割為小型,可復(fù)用及可封裝的模塊。被稱(chēng)為自定義元素接口,雖然現(xiàn)在仍然可用,但是已經(jīng)被棄用并被認(rèn)為是糟糕的實(shí)現(xiàn)。 原文請(qǐng)查閱這里,略有刪減,本文采用知識(shí)共享署名 4.0 國(guó)際許可協(xié)議共享,BY Troland。 這是 JavaScript 工作原理第十九章。 概述 在 前述文章中,我們介紹了 Shadow ...
閱讀 3878·2021-07-28 18:10
閱讀 2586·2019-08-30 15:44
閱讀 1099·2019-08-30 14:07
閱讀 3468·2019-08-29 17:20
閱讀 1587·2019-08-26 18:35
閱讀 3543·2019-08-26 13:42
閱讀 1827·2019-08-26 11:58
閱讀 1601·2019-08-23 18:33