JS进修笔记(第5章)(援用范例)

援用范例的值(对象)是援用范例的一个实例,援用范例是一种数据结构,用于将数据和功用组织在一起。援用范例有时候也被称为对象定义,因为他们形貌的是一类对象所具有的属性和要领。对象是某个特定援用范例的实例,新对象是运用new操纵符后跟一个组织函数来建立。

var  person = new Object();

5.1 Object范例

1. 建立Object实例
建立Object实例的体式格局有两种:
(1)运用new操纵符后跟Object组织函数

var person = new Object();
person.name = "Chris";
person.age = 22;

(2)运用对象字面量示意法

var person = {
name : "Chris",
age : 22
};

注重:
1) 在对象字面量中,运用逗号来分开差别的属性,但在末了一个属性背面不能增加逗号。不然在一些早 版本浏览器中致使毛病。
2)在运用对象字面量语法时,属性名也可以运用字符串;
3)运用对象字面量语法时,假如留空其花括号,则可以定义只包含默许属性和要领的对象,以下:

var person = {};
person.name = "Chris";
person.age = 22;

2. 接见对象属性
(1)点示意法

 alert(person.name);  //"Chris"

(2)方括号示意法

alert(person["name"]);  //"Chris"

注重:1)方括号示意法的重要长处是可以经由过程变量来接见属性;

 var propertyName = "name";
 alert(person[propertyName]);  //"Chris"

2)假如属性名中包含会致使语法毛病的字符,或许属性名运用的是关键字或许保留字,也可以运用方括号示意法;

person["first name"] = "Chris";  

因为”first name”中包含一个空格,所以不能让运用点示意法来接见它们,但是,属性名中是可以包含非字母非数字的,这时候就可以够运用方括号示意法来接见它们;
3)平常,除非必须运用变量来接见属性,不然发起运用点示意法。

5.2 Array范例

1、与其他言语差别的是:
(1)ECMScript数组的每一项可以保留任何范例的数据;
(2)ECMScript数组的大小是可以动态调解的,即可以跟着数据的增加自动增进以包容新增数据;
2、建立数组的基本体式格局有两种:
(1)运用Array组织函数;

var colors = new Array();

(2)运用数组字面量示意法,数组字面量由一对包含数组项的方括号示意,多个数组之间以逗号离隔;

var colors = ["red", "blue", "yellow"];

3、在读取和设置数组的值时,要运用方括号并供应响应值的基于0的数字索引;

var colors = ["red", "blue", "green"] //定义一个字符串数组`
alert(colors[0]); //显现第一项
colors[2] = "black";  //修正第三项
colors[3] = "brown";  //新增第四项

4、数组的项数保留在其length属性中,这个属性一向会返回0或更大的值;

var colors = ["red", "blue", "green"]; //定义一个字符串数组
alert(colors.length);  //3

5、经由过程设置数组的length属性,可以从数组的末尾移除项或许向数组中增加新项;

var colors = ["red", "blue", "green"] //定义一个字符串数组
colors.length = 2;
alert(colors[2]);  //undefined(移除项)

该例中的数组colors一最先有3个值,将其length属性设置为2会移除末了一项(位置为2的那一项),效果再接见colors[2]就会显现undefined。假如将其length属性设置为大于数组项数的值,则新增的每一项都回去的undefined值;

var colors = ["red", "blue", "green"] //定义一个字符串数组
colors.length = 4;
alert(colors[3]);  //undefined(新增项)

运用length属性也可以方便地在数组末尾增加新项;

var colors = ["red", "blue", "green"] //定义一个字符串数组
colors[colors.length] = "black";  //(在位置3)增加一种色彩
colors[colors.length] = "brown";  //(在位置4)再增加一种色彩

当把一个值放在超越当前数组大小的位置上时,数组就会从新盘算其长度值,即长度值即是末了一项的索引加1。
1. 检测数组
(1)关于一个网页或许有个全局作用域而言,运用instanceof操纵符就可以肯定某个对象是不是是数组;

if (value instanceof Array) {
   //对数组实行某些操纵
}

(2)Array.isArray()要领的目标是终究肯定某个值究竟是不是是数组,而不论它是在哪一个全局实行环境中建立的。

if (Array.isArray(value)) {
  //对数组实行某些操纵
}

2. 转换要领
一切对象都具有toLocaleString()toString()valueOf()要领。个中,挪用valueOf()返回的照样数组自身,而挪用数组的toString()要领会返回有数组中每一个值的字符串情势拼接而成的一个以逗号分开的字符串;
toLocalString()要领经常会返回与toString()和valueOf()要领雷同的值,但也不老是云云。

  • (1)当挪用数组的toLocaleString()要领时,挪用的是每一项的toLocaleString()要领。
  • (2)采纳alert()输出时,因为alert()要吸收字符串参数,所以它会在背景挪用toString()要领,由此会取得与直接挪用toString()要领雷同的效果。

数组继承的toLocaleString()、toString()和valueOf()要领,在默许情况下都邑以逗号分开的字符串的情势返回数组项,而假如运用join()要领,则可以运用差别的分开符来构建这个字符串(将数组转化为字符串)。join()要领只吸收一个参数,即用作分开符的字符串,然后返回包含一切数组项的字符串.假如不给join()要领传入任何值,或许给它传入undefined,则运用逗号作为分开符。split()将字符喜转换为数组。

var colors = ["red", "green", "blue"];
alert(colors.join(","));  //red,green,blue
alert(colors.join("||"));  //red||green||blue

var color1 = "2:3:4:5";
color1.split(":");    //["2","3","4","5"]

3. 栈要领
栈是一种LIFO(Last-In-First-Out,先进后出)的数据结构,也就是最新增加的项最早被移除。而栈中项的插进去(叫做推入)和移除(叫做弹出),只发作在一个位置——栈的顶部。
push()要领可以吸收恣意数目的参数,把它们逐一增加到数组末尾,并返回修正后数组的长度;
pop()要领从数组末尾移除末了一项,削减数组的length值,然后返回移除的项;

var colors = new Array();  //建立一个数组
var count = colors.push("red", "green");  //推入两项
alert(count);  //2

var item = colors.pop(); //取得末了一项
alter(item);  //"green"
alert(colors.length); //1

4. 行列要领
行列数据结构的接见规则是FIFO(First-In-First-Out,先进先出)。行列在列表的末尾增加项,从列表的前端移除项;
(1)shift()要领,它可以移除数组中的第一项并返回该项,同时将数组长度减1(删除第一项);
(2)unshift()要领,它能在数组前端增加恣意个项并返回新数组的长度。
(3)连系运用shift()和push()要领,可以像运用行列一样运用数组;(末尾增加项,前端移除项)

var colors = new Array(); //建立一个数组
var count = colors.push("red", "green"); //推入两项
alert(count);  //2

count = colors.push("black");  //末尾推入另一项

var item = colors.shift();  //取得第一项
alert(item); //"red" 
alert(colors.length);  //2
(4)同时运用unshift()和pop()要领,可以从相反的方一向模仿行列;(前端增加项,末尾移除项)
var colors = new Array(); //建立一个数组`
var count = colors.push("red", "green"); //推入两项
alert(count);  //2

count = colors.unshift("black");  //前端推入另一项

var item = colors.pop();  //取得末了一项
alert(item); //"green" 
alert(colors.length);  //2

5. 重排序要领
(1)数组中已存在的两个可以直接用重排序的要领:reverse()sort()要领
reverse()要领会反转数组项的递次;
在默许情况下,sort()要领按升序分列数组项,sort()要领会挪用每一个数组项的toString()转型要领,然后比较取得字符串,已肯定怎样排序,纵然数组中的每一项都是数值,sort()要领比较的也是字符串。
(2)比较函数(P93)

function compare(value1,value2) {
    if(value1 < value2) {
        return -1;
    }else if(value1 > value2){
        return 1;
    }else{
        return 0;
    }
}

6. 操纵要领
(1)concat()要领可以基于当前数组中的一切项建立一个新的数组
(2)slice()要领可以基于当前数组中的一个多个项建立一个新的数组。slice()要领可以吸收一个或许两个参数,即要返回项的肇端和完毕位置。在只需一个参数的情况下,slice()要领返回从该参数指定位置最先到当前数组末尾的一切项;假如有两个参数,该要领返回肇端和完毕位置之间的项——但不包含完毕位子的项。注重,slice()要领不会影响原始数组。

var colors = ["red", "green", "blue", "yellow","purple"];
var colors2 = colors.silce(1);
var colors3 = colors.slice(1,4);

alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow

注重:
1)假如slice要领的参数中有一个隶属,则用数组长度加上该数来肯定响应的位置;
2)假如完毕位置小于肇端位置,则返回空数组
(3)splice()要领的重要用处是向数组的中部插进去项
1)删除:可以删除恣意数目的项,只需指定2个参数:splice(要删除的第一项的位置,要删除的项数)
2)插进去:可以向指定位置插进去恣意数目的项,只需供应3个参数splice(肇端位置,要删除的项数,要插进去的项)
3)替代:可以向指定位置插进去恣意数目的项,且同时删除恣意数目的项,只需指定3个参数
splice(肇端位置,要删除的项数,要插进去的恣意数目的项),插进去的项数没必要与删除的项数相称;

var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1)    //删除第一项
alert(colors);  //green,blue
alert(removed); //red,返回的数组中只包含一项

removed = colors.splice(1,0,"yellow","orange");  //从位置1最先插进去两项
alert(colors);  //green,yellow,orange,blue
alert(removed);  //返回的是一个空数组

removed = colors.splice(1,1,"red","purple");   //插进去两项,删除一项
alert(colors); //green,red,purple,orange,blue
alert(removed); //yellow,返回的数组中只包含一项

7. 位置要领
indexOf()lastIndexOf(),这两个要领都吸收两个参数:要查找的项和(可选的)示意查找出发点位置的索引。个中,indexOf()要领从数组的开首(位置0 )最先向后查找。LastIndexOf()要领则从数组的末尾向前查找。这两个要领都返回要查找的项在数组中的位置,或许在没有找到的情况下返回-1.

var numbers = [1,2,3,4,5,4,3,2,1];
alert(numbers.indexOf(4));  //3
alert(numbers.lastIndexOf(4));   //5

alert(numbers.indexOf(4,4));  //5
alert(numbers.lastIndexOf(4,4));   //3

8. 迭代要领
每一个要领都吸收两个参数:要在每一项运转的函数和(可选的)运转该函数的作用域对象。传入这些要领中的函数会吸收三个参数:数组项的值、该项在数组中的位置和数组对象自身

  • every():对数组中的每一项运转给定函数,假如该函数对每一项都返回true,则返回true;
  • filter():对数组中的每一项运转给定函数,返回该函数会返回true的项构成的数组;
  • forEach():对数组中的每一项运转给定函数,该要领没有返回值;
  • map():对数组中的每一项运转给定函数,返回每次函数挪用的效果构成的数组;
  • some():对数组中的每一项运转给定函数,假如该函数对任一项返回true,则返回true。
var numbers = [1,2,3,4,5,4,3,2,1];
  var everyResult = numbers.every(function(item,index,array){
      return (itrem>2);
  });
  alert(everyResult);   //false
  
  var someResult = numbers.every(function(item,index,array){
    return (itrem>2);
});
  alert(someResult);  //true

注重:对every()来讲,传入的函数必须对每一项都返回true,这个要领才返回true;而some()要领则是只需传入的函数对数组中的某一项返回true,就会返回true。

9. 合并要领
ECMAScript5新增了两个合并数组的要领:reduce()和reduceRight()。这两个要领都邑迭代数组的一切项,然后构建一个终究返回值。个中reduce()要领从数组的第一项最先,逐一遍历到末了。而reduceRight()则从数组的末了一项最先,向前遍历到第一项。
以上两种要领都吸收两个参数:在每一项挪用的函数、作为合并基本的初始值
传给reduce()和reduceRight()的函数吸收四个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都邑作为第一个参数自动传给下一项。以第一次迭代发作在数组的第二项上,因而第一个参数是数组的第一项,第二个参数就是数组的第二项。

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15

5.3 Date范例

要建立一个日期对象,运用new操纵符和Date组织函数即可
var now = new Date();
//在挪用Date组织函数而不通报参数的情况下,新建立的对象自动取得当前日期和时候
假如想依据特定的日期和时候建立日期对象,必须传入该日期的毫秒数。或许运用Date.parse()Date.UTC();
Date.parse()要领吸收一个示意日期的字符串参数,然后尝试依据这个字符串返回响应日期的毫秒数;假如传入Date.parse()要领的字符串不能示意日期,那末它会返回NaN;假如直接将示意日期的字符串通报给Date组织函数,也会在背景挪用Date.parse()。
Date.UTC()要领一样也返回示意日期的毫秒数,Date.UTC()的参数分别是年份、基于0的月份,月中的哪一天(1到31)、小时数(0到23)、分钟、秒以及毫秒数。在这些参数中,只需年和月是必须的
Date.now()要领,返回示意挪用这个要领时的日期和时候的毫秒数。
1. 继承的要领
Date范例也重写了toLocaleString()、toString()和valueOf()要领。

  • Date范例的toLocaleString()要领会根据与浏览器设置的时区相适应的花样返回日期和时候。(大抵意味时候花样中会包含AM或PM,但不会包含时区信息);
  • Date范例的toString()要领则平常返回带有时区信息的日期和时候,个中时候平常以军用时候示意;
  • Date范例的valueOf()要领则根本不返回字符串,而是返回日期的毫秒示意。因而,可以方便运用比较操纵符(小于或大于)来比较日期值。

2. 日期花样化要领

  • toDateString()——以特定于完成的花样显现礼拜几、月、日和年;
  • toTimeString()——以特定于完成的花样显现时、分、秒和时区;
  • toLocaleDateString()——以特定于区域的花样显现礼拜几、月、日和年;
  • toLocaleTimeString()——以特定于完成的花样显现时、分、秒和时区;
  • toUTCString()——以特定于完成的花样完全的UTC日期;

3. 日期/时候组件要领 (P102)

5.4 RegExp范例

RegExp范例是用来支撑正则表达式:
(1)第一种建立正则表达式的要领以下:
var expression = / pattern / flags;
个中的形式(pattern)部份可所以任何简朴或庞杂的正则表达式,可以包含字符类、限定符、分组、向前查找以及反向援用。
每一个正则表达式都可以带有一个或许多个标志(flags),用以标明正则表达式的行动。正则表达式的婚配形式支撑以下3个标志:

  • g:示意全局(global)形式,即形式将被运用于一切字符串,而非在发明第一个婚配项时马上住手;
  • i:示意不辨别大小写(case-insensitive)形式,即在肯定婚配项时疏忽形式与字符串的大小写;
  • m:示意多行(multiline)形式,即在抵达一行文本末尾时还会继承查找下一行是不是存在与形式婚配的项

形式中运用的一切元字符都必须转义。正则表达式中的元字符包含:( [ { ^ $ | ) ? * + . ] }
(2)另一种建立正则表达式的体式格局是运用RegExp函数,它吸收两个参数:一个是要婚配的字符串形式,另一个是可选的标志字符串。
//婚配第一个"bat"或"cat",不辨别大小写
var pattern1 = /[bc]at/i; //运用第一种要领建立
var pattern2 = new RegExp("[bc]at","i"); //运用RegExp函数完成
因为RegExp组织函数的形式参数是字符串,所以在某些情况下要对字符串举行两重转义。

正则表达式字面量一向会同享统一个RegExp实例,而运用组织函数建立的每一个新RegExp实例都是一个新实例。
1. RegExp实例属性

  • global:布尔值,示意是不是设置了g标志;
  • ignoreCase:布尔值,示意是不是设置了i标志;
  • lastIndex:整数,示意最先搜刮下一个婚配项的字符位置,从0算起。
  • multiline:布尔值,示意是不是设置了m标志;
  • source:正则表达式的字符串示意,根据字面量情势而非传入组织函数的字符串形式返回。
  • source属性保留的是范例情势的字符串,即字面量情势所用的字符串。

2. RegExp实例要领
正则表达式的第一个要领是exec()链接形貌: 吸收一个参数,即要运用形式的字符串,然后返回包含第一个婚配信息的数组;或许在没有婚配项的情况下返回null。exec() 要领还返回两个属性。index 属性声明的是婚配文本的第一个字符的位置(婚配项在字符串中的位置)。input 属性则寄存的是被检索的字符串 string(示意运用正则表达式的字符串)。

  • 在数组中,第一项是与全部形式婚配的字符串,其他项是与形式中的捕捉组婚配的字符串(假如形式中没有捕捉组,则该数组只包含一项)
  var text = "mom and dad and baby";
  var pattern = /mom( and dad( and baby)?)?/gi;

  var matches = pattern.exec(text);  
  alert(matches.index);    //0
  alert(matches.input);    //"mom and dad and baby"
  alert(matches[0]);       //"mom and dad and baby"
  alert(matches[1]);       //"and dad and baby"
  alert(matches[2]);       //"and baby"
  • 关于exec()要领而言,纵然在形式中设置了全局标志(g),他每次也只会返回一个婚配项。在不设置全局标志的情况下,在统一个字符串上屡次挪用exec()将一向返回第一个婚配项的信息,而在设置全局变量的情况下,每次挪用exec()则都邑在字符串中继承查找新婚配项。

正则表达式的第二个要领是test()链接形貌:它接收一个字符串参数,假如字符串 string 中含有与RegExpObject 婚配的文本,则返回true,不然返回false
3. RegExp组织函数属性

  • input:近来一次要婚配的字符串[“$_“]
  • lastMatch:近来一次与全部正则表达式婚配的字符串[“$&“]
  • lastParen:近来一次婚配的捕捉组[“$+“]
  • leftContext:input字符串中lastMatch之前的文本[“$`”]
  • rightContext:input字符串中lastMatch以后的文本[“$'“]
  • multiline:布尔值,示意是不是一切表达式都运用多行形式[“$*“]
    var text = "this has been a short summer";
    var pattern = /(.)hort/g;
    
    if(pattern.test(text)){
    alert(RegExp.input);  //this has been a short summer
    alert(RegExp.leftContext);  //this has been
    alert(RegExp.rightContext);  //summer
    alert(RegExp.lastMatch);  //short
    alert(RegExp.lastParen);  //a
    alert(RegExp.multiline);  //false
    }

注重:以上运用的长属性名都可以用响应的短属性名来替代,不太短属性名不是有用的ECMAScript标识符,因而必须经由过程方括号语法来接见它们。

var text = "this has been a short summer";
var pattern = /(.)hort/g;

if(pattern.test(text)){
alert(RegExp.$_);  //this has been a short summer
alert(RegExp["`$`"]);  
//this has been
alert(RegExp["$'"]);  //summer
alert(RegExp["$&"]);  //short
alert(RegExp["$+"]);  //a
alert(RegExp["$*"]);  //false
}

4. 形式的局限性 (P109)

5.5 Function范例

1. 没有重载(深切明白)
2. 函数声明与函数表达式
3. 作为值的函数
4. 函数的内部属性
在函数内部,有两个特别的对象:argumentsthis
(1)arguments是一个类数组对象,包含着传入函数中的一切参数,它的重要用处是保留函数参数。这个对象另有一个名叫callee的属性,该属性是一个指针,指向具有这个arguments对象的函数。

function factorial(num) {
if (num<=1) {
return 1;
} else {
return num*factorial(num-1);
}
}

转变为

function factorial(num) {
if (num<=1) {
return 1;
} else {
return num*arguements.callee(num-1);
}
}

在这个重写后的factorial()函数的函数体内,没有再援用函数名factorial。如许,不管援用函数时运用的是什么名字,都可以保证一般完成递归挪用。
(2)函数内部的另一个特别对象是this。this援用的是函数实行的环境对象(当在网页的全局作用域中挪用函数时,this对象援用的就是window)
!函数的名字仅仅是一个包含指针的变量罢了
EMAScript也范例了另一个函数对象的属性:caller这个属性保留着 挪用当前函数的函数的援用
5. 函数属性和要领
每一个函数都包含两个属性:lengthprototype
(1)length属性示意函数愿望吸收的定名参数的个数
(2)prototype属性是保留他们一切实例要领的真正地点
(3)每一个函数都包含两个非继承而来的要领:apply()call(),这两个要领的用处都是在特定的作用域中挪用函数,实际上即是设置函数体内this对象的值。
apply()要领吸收两个参数:在个中运转的函数的作用域 和 参数数组
call()要领:第一个参数是this值没有变化,变化的是其他参数都直接通报给函数。换句话说,在运用call()要领时,通报给函数的参数必须逐一枚举出来。

function sum(num1,num2) {
return num1+num2; 
}
function callSum1(num1,num2) {
return sum.apply(this,arguments); //传入arguments对象
}

function callSum2(num1,num2) {
return sum.apply(this,[num1,num2]); //传入数组
}

function callSum3(num1,num2) {
return sum.call(this,num1,num2); //其他参数都直接通报给函数`
}

alert(callSum1(10,10));  //20
alert(callSum2(10,10));  //20
alert(callSum3(10,10));  //20

apply()和call()真正的用武之地在——可以扩大函数赖以运转的作用域

windows.color = "red";
var o = {color : "blue"};

function sayColor() {
alert(this.color);
}
sayColor();  //red

sayColor.call(this);  //red
sayColor.call(window); //red
sayColor.call(o); //blue

运用apply()或call()来扩大作用于的最大优点就是,对象不需要与要领有任何耦合关联。
(4)bind()要领。这个要领会建立一个函数的实例,其this值会被绑定到传给bind()函数的值。

windows.color = "red";
var o = {color : "blue"};

function sayColor() {
alert(this.color);
}
var objectSayColor= sayColor.bind(o);
objectSayColor();   //blue

5.6 基本包装范例

ECMAScript供应了3种特别的援用范例:Boolean、Number和String
援用范例与基本包装范例的重要区分就是对象的生计周期。运用new操纵符建立的援用范例的实例,在实行流脱离当前作用域之前都一向保留在内存中。而自动建立的基本包装范例的对象,则只存在于一行代码的实行霎时,然后马上被烧毁。这意味着我们不能在运转时为基本范例值增加属性和要领。

var s1 = "some text";
s1.color = "red";
alert(s1.color); //undefined

!注重:运用new挪用基本包装范例的组织函数,与直接挪用同名的转型函数是不一样的

var value = "25";
var number = Number(value); //转型函数
alert(typeof number); //"number"

var obj = new Number(value); //组织函数
alert(type of obj);  //"object"

1. Boolean范例
(1)Boolean范例是与布尔值对应的援用范例。要建立Boolean对象,可以像下面如许挪用Boolean组织函数并传入true或许false值。

var BooleanObject= newBoolean(true);

Boolean范例的实例重写了valueOf()要领,返回基本范例值true或false;重写了toString()要领,返回字符串”true”和”flase”。

var falseObject = new Boolean(false);
var result = falseObject && true;   
alert(result);  //true 
(布尔表达式中的一切对象都邑被转化为true,因而falseObject对象在布尔表达式中代表的是true,效果true&&true就即是true) 

(2)基本范例与援用范例的布尔值另有两个区分:
1)typeof操纵符对基本范例返回"boolean",而对援用范例返回"object";
2)因为Boolean对象是Boolean范例的实例,所以运用instanceof操纵符测试Boolean对象会返回true,而测试基本范例的布尔值则返回false。

var falseObject = new Boolean(false);
var falseValue = false;
alert(typeof falseObject); //Object
alert(typeof falseValue); //boolean
alert(falseObject instanceof Boolean); //true
alert(falseValue instanceof Boolean); //false

2. Number范例
(1)要建立Number对象,可以在挪用Number组织函数时向个中通报响应的数值。

var numberObject = new Number(10);

(2)Number范例也重写了valueOf()、toLocaleString()和toString()要领。重写后的valueOf()要领返回对象示意的基本范例的值,别的两个要领则返回字符串情势的数值。
(3)toFixed()要领会根据指定的小数位返回数值的字符串示意。

var num = 10;
alert(num.toFixed(2)); //"10.00"

假如数值自身包含的小数位比指定的还多,那末靠近指定的最大小数位的值就会被舍入。

var num = 10.005;
alert(num.toFixed(2)); //"10.01"

(4)toExponential()可用于花样化数值,该要领返回以指数示意法示意的数值的字符串情势。toExponential()也吸收一个参数,而且该参数一样也是指定输出效果的小数位数。

var num = 10;
alert(num.toExponential(1)); //"1.0e+1"

(5)toPrecision()要领能够会返回牢固大小(fixed)花样,也能够返回指数(exponential)花样。这个要领吸收一个参数,即示意数值的一切数字的位数(不包含指数部份)。

var num = 99;
alert(num.toPrecision(1)); //"1e+2"
alert(num.toPrecision(2)); //"99"
alert(num.toPrecision(3)); //"99.0"

3. String范例
链接形貌

5.7 单体内置对象

1. Global对象
2. Math对象

5.8 小结

    原文作者:皮卡丘丘丘
    原文地址: https://segmentfault.com/a/1190000018410923
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞