摘要:所謂包裝對(duì)象,指的是與數(shù)值字符串布爾值分別相對(duì)應(yīng)的三個(gè)原生對(duì)象。引擎自動(dòng)將其轉(zhuǎn)為包裝對(duì)象,在這個(gè)對(duì)象上調(diào)用屬性。調(diào)用結(jié)束后,這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀自動(dòng)轉(zhuǎn)換生成的包裝對(duì)象是只讀的,無法修改。
所謂“包裝對(duì)象”,指的是與數(shù)值、字符串、布爾值分別相對(duì)應(yīng)的Number、String、Boolean三個(gè)原生對(duì)象。這三個(gè)原生對(duì)象可以把原始類型的值變成(包裝成)對(duì)象
var v1 = new Number(123);
var v2 = new String("abc");
var v3 = new Boolean(true);
typeof v1 // "object"
typeof v2 // "object"
typeof v3 // "object"
v1 === 123 // false
v2 === "abc" // false
v3 === true // false
目的
使得原始類型的值也有辦法調(diào)用自己的方法。
這三個(gè)對(duì)象作為構(gòu)造函數(shù)使用(帶有new)時(shí),可以將原始類型的值轉(zhuǎn)為對(duì)象;作為普通函數(shù)使用時(shí)(不帶有new),可以將任意類型的值,轉(zhuǎn)為原始類型的值
2.實(shí)例方法
三種包裝對(duì)象各自提供了許多實(shí)例方法,詳見后文。這里介紹兩種它們共同具有、從Object對(duì)象繼承的方法:valueOf()和toString()
2.1valueOf()
valueOf()方法返回包裝對(duì)象實(shí)例對(duì)應(yīng)的原始類型的值。
new Number(123).valueOf() // 123
new String("abc").valueOf() // "abc"
new Boolean(true).valueOf() // true
toString()
2.2toString()方法返回對(duì)應(yīng)的字符串形式。
new Number(123).toString() // "123"
new String("abc").toString() // "abc"
new Boolean(true).toString() // "true"
3原始類型與實(shí)例對(duì)象的自動(dòng)轉(zhuǎn)換
某些場(chǎng)合,原始類型的值會(huì)自動(dòng)當(dāng)作包裝對(duì)象調(diào)用,即調(diào)用包裝對(duì)象的屬性和方法。這時(shí),JavaScript 引擎會(huì)自動(dòng)將原始類型的值轉(zhuǎn)為包裝對(duì)象實(shí)例,并在使用后立刻銷毀實(shí)例。
比如,字符串可以調(diào)用length屬性,返回字符串的長(zhǎng)度。
var str = "abc";
str.length // 3
// 等同于
var strObj = new String(str)
// String {
// 0: "a", 1: "b", 2: "c", length: 3, [[PrimitiveValue]]: "abc"
// }
strObj.length // 3
上面代碼中,abc是一個(gè)字符串,本身不是對(duì)象,不能調(diào)用length屬性。JavaScript 引擎自動(dòng)將其轉(zhuǎn)為包裝對(duì)象,在這個(gè)對(duì)象上調(diào)用length屬性。調(diào)用結(jié)束后,這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀
3.1自動(dòng)轉(zhuǎn)換生成的包裝對(duì)象是只讀的,無法修改。所以,字符串無法添加新屬性。
var s = "Hello World";
s.x = 123;
s.x // undefined
上面代碼為字符串s添加了一個(gè)x屬性,結(jié)果無效,總是返回undefined
3.2調(diào)用結(jié)束后,包裝對(duì)象實(shí)例會(huì)自動(dòng)銷毀。這意味著,下一次調(diào)用字符串的屬性時(shí),實(shí)際是調(diào)用一個(gè)新生成的對(duì)象,而不是上一次調(diào)用時(shí)生成的那個(gè)對(duì)象,所以取不到賦值在上一個(gè)對(duì)象的屬性。如果要為字符串添加屬性,只有在它的原型對(duì)象String.prototype上定義
4自定義方法
除了原生的實(shí)例方法,包裝對(duì)象還可以自定義方法和屬性,供原始類型的值直接調(diào)用。
比如,我們可以新增一個(gè)double方法,使得字符串和數(shù)字翻倍。
String.prototype.double = function () {
return this.valueOf() + this.valueOf();
};
"abc".double()
// abcabc
Number.prototype.double = function () {
return this.valueOf() + this.valueOf();
};
(123).double() // 246
上面代碼在String和Number這兩個(gè)對(duì)象的原型上面,分別自定義了一個(gè)方法,從而可以在所有實(shí)例對(duì)象上調(diào)用。注意,最后一張的123外面必須要加上圓括號(hào),否則后面的點(diǎn)運(yùn)算符(.)會(huì)被解釋成小數(shù)點(diǎn)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/105894.html
摘要:所謂包裝對(duì)象,指的是與數(shù)值字符串布爾值分別相對(duì)應(yīng)的三個(gè)原生對(duì)象。引擎自動(dòng)將其轉(zhuǎn)為包裝對(duì)象,在這個(gè)對(duì)象上調(diào)用屬性。調(diào)用結(jié)束后,這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀自動(dòng)轉(zhuǎn)換生成的包裝對(duì)象是只讀的,無法修改。 所謂包裝對(duì)象,指的是與數(shù)值、字符串、布爾值分別相對(duì)應(yīng)的Number、String、Boolean三個(gè)原生對(duì)象。這三個(gè)原生對(duì)象可以把原始類型的值變成(包裝成)對(duì)象 var v1 = new Numbe...
摘要:所謂包裝對(duì)象,指的是與數(shù)值字符串布爾值分別相對(duì)應(yīng)的三個(gè)原生對(duì)象。引擎自動(dòng)將其轉(zhuǎn)為包裝對(duì)象,在這個(gè)對(duì)象上調(diào)用屬性。調(diào)用結(jié)束后,這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀自動(dòng)轉(zhuǎn)換生成的包裝對(duì)象是只讀的,無法修改。 所謂包裝對(duì)象,指的是與數(shù)值、字符串、布爾值分別相對(duì)應(yīng)的Number、String、Boolean三個(gè)原生對(duì)象。這三個(gè)原生對(duì)象可以把原始類型的值變成(包裝成)對(duì)象 var v1 = new Numbe...
摘要:所謂包裝對(duì)象,指的是與數(shù)值字符串布爾值分別相對(duì)應(yīng)的三個(gè)原生對(duì)象。引擎自動(dòng)將其轉(zhuǎn)為包裝對(duì)象,在這個(gè)對(duì)象上調(diào)用屬性。調(diào)用結(jié)束后,這個(gè)臨時(shí)對(duì)象就會(huì)被銷毀自動(dòng)轉(zhuǎn)換生成的包裝對(duì)象是只讀的,無法修改。 所謂包裝對(duì)象,指的是與數(shù)值、字符串、布爾值分別相對(duì)應(yīng)的Number、String、Boolean三個(gè)原生對(duì)象。這三個(gè)原生對(duì)象可以把原始類型的值變成(包裝成)對(duì)象 var v1 = new Numbe...
摘要:目錄導(dǎo)語(yǔ)包裝對(duì)象的理解三大包裝對(duì)象的知識(shí)點(diǎn)小結(jié)導(dǎo)語(yǔ)包裝對(duì)象是為了彌補(bǔ)基本數(shù)據(jù)類型的非對(duì)象特性而產(chǎn)生的,對(duì)于基本類型值而言,本來是不存在屬性和方法的,但是我們可以在使用字面量創(chuàng)建字符串時(shí),調(diào)用例如的方法,那么其內(nèi)在原理究竟是什么呢閱讀完本篇文 目錄 導(dǎo)語(yǔ) 1. 包裝對(duì)象的理解 2. 三大包裝對(duì)象的知識(shí)點(diǎn) 3. 小結(jié) 導(dǎo)語(yǔ) 包裝對(duì)象是為了彌補(bǔ)基本數(shù)據(jù)類型的非對(duì)象特性而產(chǎn)生的,對(duì)于基本類型...
摘要:對(duì)象概述作為構(gòu)造函數(shù),它主要用于生成布爾值的包裝對(duì)象實(shí)例。無輸出上面代碼的第一個(gè)例子之所以得到,是因?yàn)閷?duì)應(yīng)的包裝對(duì)象實(shí)例是一個(gè)對(duì)象,進(jìn)行邏輯運(yùn)算時(shí),被自動(dòng)轉(zhuǎn)化成布爾值因?yàn)樗袑?duì)象對(duì)應(yīng)的布爾值都是。 1.Boolean 對(duì) 象 1.1概述作為構(gòu)造函數(shù),它主要用于生成布爾值的包裝對(duì)象實(shí)例。 false對(duì)應(yīng)的包裝對(duì)象實(shí)例,布爾運(yùn)算結(jié)果也是true。 if (new Boolean(false...
閱讀 3738·2021-09-09 09:33
閱讀 3024·2019-08-30 15:56
閱讀 3017·2019-08-30 15:56
閱讀 3307·2019-08-30 15:55
閱讀 499·2019-08-30 15:53
閱讀 2179·2019-08-30 15:52
閱讀 662·2019-08-28 18:16
閱讀 2391·2019-08-26 13:51