基本包装类型

(1)值类型:数值、布尔值、null、undefined。

(2)引用类型:对象、数组、函数。

为了方便操作,JavaScript提供了3个特殊的引用类型:Boolean、Number和String。实际上,每当读取一个基本类型值(boolean、number、string)的时候,后台就会创建一个对应的基本包装类型的对象,从而可以调用这些类型的方法来操作数据。

var s1 ="hello javascript";

var s2 = s1.substring(2);

在上面的例子中,s1是一个字符串,是基本类型值。而s1调用了substring()方法,理论上基本类型值不是对象,它们不应该有方法的。其实,为了实现这种操作,后台已经自动完成了一系列的处理。当第二行代码访问s1时,会完成下面一系列操作:

1、创建String类型的一个实例; var s1 = new String("some text");

2、在实例上调用指定的方法;  var s2 = s1.substring(2);

3、销毁这个实例  s1 = null;

引用类型和基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁

vars1 ="hello";

s1.name ="Jack";

alert(s1.name);    // undefined

对基本包装类型的实例调用typeof会返回object。

Object构造函数会根据传入值的类型返回相应的基本包装类型:

var obj1 =new Object("hello");

var obj2 =new Object(12);

var obj3 =new Object(true);

alert(obj1 instance of String);// true

alert (obj2 instance of Number);// true

alert(obj3 instance of Boolean);// true

注意,使用new调用基本包装类型的构造函数,与直接调用同名的转型函数不一样:

var val ="10";

var num = Number(val);  // 转型函数(用于转换参数类型的函数)

alert (typeof num);   // 类型是number

var obj =new Number (val);   // 构造函数

alert (typeof obj);// 类型是object

Boolean类型

Boolean是与boolean(布尔值)相对应的基本包装类型

在布尔表达式中使用Boolean对象时要特别注意:布尔表达式中的所有对象都会被转换为true。

var  falseObj = new Boolean (false);  // falseObj变为了true

var  result = falseObj &&true;

alert (result);   // true

var falseVal =false;  //直接用的布尔类型值,仍然是false

result = falseVal &&true;

alert(result);  // false

基本类型与引用类型的布尔值还有两个区别:

typeof操作符对基本类型返回“boolean”,而基本包装类型返回“object”

使用instanceof操作符测试Boolean对象会返回true,而测试基本类型的布尔值则返回false。

alert (typeof falseObj);  // 基本包装类型返回object

alert(typeof falseVal);  // 基本引用类型返回boolean

alert(falseObj  instanceof  Boolean);// 基本包装类型返回true

alert(falseVal  instanceof  Boolean);// 基本引用类型返回false

Number类型

(1)toFixed()方法会按照指定的小数位返回值得字符串表示。

var  num1 =11;

alert  (num1.toFixed(2));   // "11.00"

var  num2 =11.005;

alert  (num1.toFixed(2));  // "11.01"

(2)toExponential()方法用于格式化,返回指数表示法。

var num =11;

alert  (num.toExponential(1));    // “1.0e+1”

(3)toPrecision()方法可能返回固定大小格式,也可能返回指数格式。可以接收一个参数,表示数值的所有数字的位数(不含指数部分)

var num =99;

alert(num.toPrecision(1));  // "1e+2",即100,无法准确表示99

alert(num.toPrecision(2));  // "99"

alert(num.toPrecision(3));  // "99.0"

与Boolean类型相似,使用typeof和instanceof操作基本类型数值和引用类型数值时,得到的结果完全不同。

String类型

1、字符方法

两个用于访问字符串中特定字符的方法:charAt()和charCodeAt()。

charAt():以单字符串的形式返回给定位置的那个字符

charCodeAt():返回字符的编码

var strVal ="hello";

alert(strVal.char(1));  // "e"

alert(strVal.charCodeAt(1));    // "101"

2、字符串操作方法

concat()、slice()、substr()、substring()

3、字符串位置方法

indexOf()、lastIndexOf()

4、删除空格

trim()会创建一个字符串的副本,删除前置及后缀的所有空格,然后返回结果。

5.字符串大小写转换方法

toLocaleUpperCase()、toUpperCase()、toLocaleLowerCase()、strVal.toLowerCase()

6.字符串模式匹配方法

(1)match()

var  text ="cat, bat, sat, fat";

var  pattern =/.at/  ;

var  matches = text.match(pattern);

alert (matches.index);// 0

alert (matches[0]);// "cat"

alert (pattern.lastIndex);// 0

(2)search()

var  text ="cat, bat, sat, fat";

var  pos = text.search(/at/);

alert(pos);// 1

(3)replace()

var  text ="cat, bat, sat, fat";

var  result = text.replace("at","ond");

alert(result);       // cond, bat, sat, fat

result = text.replace (/at/g,"ond");

alert(result);       // cond, bond, sond, fond

(4)split()

7、localeCompare()方法

localeCompare()用于比较两个字符串,并返回下列结果之一:

如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(多数情况为-1,具体由实现而定)

如果字符串等于字符串的参数,则返回0;

如果字符串在字母表中应该排在字符串参数之后,则返回一个整数(多数情况为1,具体由实现而定)

8.fromCharCode()

String构造函数本身有一个静态方法:fromCharCode()。这个方法的任务是接收一或多个字符编码,然后将它们转换成一个字符串。

alert (String.fromCharCode(104,101,108,108,111));    // "hello"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容