资讯专栏INFORMATION COLUMN

javascript 基本包装类型总结

explorer_ddf / 924人阅读

摘要:实际上,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象。参数表示数值的所有数字的位数不包括指数部分。原因与显示创建对象一样类型重写了,都返回对象表示的基本字符串值。转换为针对地区的小写方式。

读《javasrcipt 高级程序设计》笔记。
ECMAScript提供了3种特殊的引用类型:Boolean,Number,String。实际上,每当读取一个基本类型值时,后台就会创建一个对应的基本包装类型的对象。

Boolean类型

重写了valueOf()方法,返回基本类型值true或false;
重写了toString()方法,返回字符串"true"或"false"
【布尔表达式中的所有对象都会被转换为true】
请看栗子

var falseObject = new Boolean(false);
var result = falseObject && true;//true

var falseValue = false;
result = falseValue && true;//false

console.log(typeof falseObject); //object
console.log(typeof falseValue); //boolean
console.log(falseObject instanceof Boolean);//true
console.log(falseValue instanceOf Boolean);//false

falseObject虽然值为false,但这是一个对象,所以被转换为true。所以第一个result 为true。
基本类型与引用类型的布尔值的区别:

typeof对于基本类型返回boolean,对于引用类型返回Object

instanceOf测试Boolean对象返回true,测试基本类型返回false
【作者建议永远不要用Boolean对象,容易造成误解】

Number类型

重写了valueOf()方法,返回对象表示的基本类型的数值
重写了toLocaleString(),toString()方法。返回字符串形式的数值。

toString()方法,可以传递一个表示基数的参数,则返回的值为该进制数值的字符串形式
var num = 10;
num.toString(); //"10"
num.toString(2); //"1010"二进制表示
num.toString(10); // "10" 十进制表示

toFixed()方法,按照指定的小数位返回数值的字符串表示,能够自动舍入
var num = 10;
num.toFixed(2); // "10.00"
var num1 = 10.005;
num1.toFixed(2); // "10.01"

toExponential() 返回以指数表示的数值的字符串形式,参数为结果中的小数位数
var num = 10;
num.toExponential(1); // "1.0e+1"

toPrecision() 可能返回固定大小格式,可能返回指数格式。参数表示数值的所有数字的位数【不包括指数部分】。会自动舍入选择最准确的形式。可以表现1到21位小数。
var num = 99;
num.toPrecision(1); // "1e+2"
num.toPrecision(2); // "99"
num.toPrecision(3); // "99.0"
【仍不建议直接实例化Number对象。原因与显示创建Boolean对象一样】

String类型

重写了valueOf()、toLocaleString()、toString(),都返回对象表示的基本字符串值。

length属性 表示字符串中包含的字符

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

charCodeAt() 以单字符字符串形式返回给定位置的字符编码

var stringValue = "hello world";
stringValue.charAt(1); //"e"
stringValue.charCodeAt(1); // "101"
//IE8及其他主流浏览器支持方括号方式访问。
stringValue[1];// "e"

concat() 将一个或多个字符串拼接起来。

var stringValue = "hello ";
var result = stringValue.concat("world");//"hello world"
console.log(stringValue);//"hello "
//可接受任意多个参数【更普遍做法是:使用+加号操作符】
var result1 = stringValue.concat("world","!");//"hello world!"

slice() slice(start,end),截取start到end的字符串,不包括end。

substr() substr(start,n),截取从start开始的n个字符

substring() substring(start,end),截取从start到end的字符串,不包括end。

//都返回一个基本类型的字符串值,对原始字符串没有任何影响
//若没有制定第二个参数,默认将字符串长度作为结束位置
var stringValue = "hello world";
stringValue.slice(3); //"lo world"
stringValue.substring(3); //"lo world"
stringValue.substr(3); //"lo world"

stringValue.slice(3,7); //"lo w"
stringValue.substring(3,7); //"lo w"
stringValue.substr(3,7); //"lo worl"

//负数情况
//slice会将传入的负值与字符串长度相加
//substring会将所有负数转换为0
//substr会将负数的第一个参数加上字符串长度,负的第二个参数转换为0
stringValue.slice(-3);//"rld"
stringValue.substring(-3);//"hello world"
stringValue.substr(-3);//"rld"

stringValue.slice(3,-4);//"lo w"
stringValue.substring(3,-4);//"hel"
stringValue.substr(3,-4);//""空字符串

indexOf() 从字符串开头向后搜索,返回子字符串的位置。没有则返回-1

lastIndexOf() 从字符串末尾向后搜索,返回子字符串的位置。没有则返回-1

//indexOf和lastIndexOf都接受第二个参数,表示从字符串中的哪个位置开始搜索
//indexOf则是从参数指定位置向后搜索
//lastIndexOf则是从参数指定位置向前搜索
var stringValue = "hello world";
stringValue.indexOf("o"); // 4
stringValue.indexOf("o",6);// 7

trim() 创建字符串的副本,删除前置及后缀的所有空格

toLowerCase() 转换为小写

toLocaleLowerCase() 。转换为针对地区的小写方式

toUpperCase() 。转换为大写

toLocaleUpperCase() 。转换为针对地区的大写方式

match() 本质上与调用RegExp的exec()方法相同,只接受一个参数,要么是正则表达式,要么是RegExp对象。

var text = "cat, bat, sat, fat";
var pattern = /.at/;

var matches = text.match(pattern);
console.log(matches.index); // 0
console.log(matches[0]); // "cat"
console.log(pattern.lastIndex);//0
console.log(matches); // ["cat", index: 0, input: "cat, bat, sat, fat"]

search() 参数要么是正则表达式,要么是RegExp对象。返回字符串中第一个匹配项的索引。没有找到返回-1.【从字符串开头向后查找】

var text = "cat, bat, sat, fat";
var pos = text.search(/at); //1

replace() 。替换子字符串。接受两个参数,第一个可以是RegExp对象或一个字符串,第二个字符串可以是一个字符串或一个函数。

var text = "cat, bat, sat, fat";
var result = text.replace("at","ond");//"cond, bat, sat, fat"
//若需要替换所有字符串,则需要提供一个正则表达式,并制定全局标志g
result = text.replace(/at/g,"ond");//"cond,bond,sond,fond"

//只有在一个匹配项的情况下,会向这个函数传递3个参数:模式匹配项、模式匹配项在字符串中的位置和原始字符串。
function htmlEscape(text){

   return text.replace(/[<>"&]/g, function(match, pos, originalText){
       switch(match){
           case "<":
               return "<";
           case ">":
               return ">";
           case "&":
               return "&";
           case """:
               return """;
       }
   });

}

htmlEscape("

Hello

");
//"

Hello

"

split() 。基于制定分隔符将一个字符串分割成多个字符串

//接受可选的第二个参数,用于指定数组大小
var colorText = "red,blue,green,yellow";
var color1 = colorText.split(",");//["red", "blue", "green", "yellow"]
var color2 = colorText.split(",",2);//["red", "blue"]
var color3 = colorText.split(/1+/);//["", ",", ",", ",", ""]
//正则表达式感觉一脸懵逼,看来明天要研究一下了。

localCompare() 比较两个字符串。

字符串在字母表中排在参数之前,返回负数【一般是-1】
字符串相等,返回0
在参数之后,返回正数【一般是1】
var stringValue = "yellow";
stringValue.localeCompare("brisk"); //1
stringValue.localeCompare("yellow"); //0
stringValue.localeCompare("zoo"); //-1

, ↩

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/79459.html

相关文章

  • JavaScript学习总结(一)基础部分

    摘要:前缀规范每个局部变量都需要有一个类型前缀,按照类型可以分为表示字符串。例如,表示以上未涉及到的其他对象,例如,表示全局变量,例如,是一种区分大小写的语言。布尔值与字符串相加将布尔值强制转换为字符串。 基本概念 javascript是一门解释型的语言,浏览器充当解释器。js执行时,在同一个作用域内是先解释再执行。解释的时候会编译function和var这两个关键词定义的变量,编译完成后从...

    AlanKeene 评论0 收藏0
  • JavaScript-包装对象

    摘要:三包装对象的概念在中,一切皆对象,包括三种原始类型的值数值字符串布尔值,在一定条件下,也会自动转为对象,也就是原始类型的包装对象。每当读取数字字符串和布尔值的属性或方法时,创建的临时对象称做包装对象。 一、ECMAScript数据类型 (1)最新的 ECMAScript 标准定义了 7 种 数据类型: 6种 原型类型: Boolean. 布尔值,true 和 false. null...

    BakerJ 评论0 收藏0
  • JavaScript中的数据类型

    摘要:八进制字面值的第一位必须是,然后是八进制数字序列。十六进制字面量的前两位必须是,后跟任何十六进制数字以及。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即销毁。 前言 ECMAScript 迄今为止标准定义了 7 种数据类型:6 种原始类型-- String、Number、 Boolean、 Undefined、Null 和 Symbol;1 种引用类型-- O...

    szysky 评论0 收藏0
  • js基础深入浅出

    摘要:当多个事件触发的时候,会把异步事件依次的放入里等同步事件执行完之后,再去队列里一个个执行拾遗常用方法总结面试的信心来源于过硬的基础参考高级程序设计你所不知道的深入浅出知识点思维导图经典实例总结那些剪不断理还乱的关系 持续不断更新。。。 基本类型和引用类型 vue props | Primitive vs Reference Types 基本类型和字面值之间的区别 基本类型和字面值相等,...

    phodal 评论0 收藏0
  • JavaScript即学即用教程[1]-类型系统

    摘要:如图反而,由于这些的都是继承自,所以原型链拐向了。因此这样一个实例,他顺着原型链是找到了如图选学内容如果我们刨根问底,去寻找和的根源的话,那这个问题又稍微有点复杂了。 基本类型 Number, Boolean, String, null, undefined 什么样的变量是 undefined 声明了变量却没赋值 未声明的变量 包装类型 其实js里面也有像java,c#里所谓的包装...

    toddmark 评论0 收藏0

发表评论

0条评论

explorer_ddf

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<