javascript原生函数

    技术2026-09-21  5

    常用的内建函数:

    String()

    Number()

    Boolean()

    Array()

    Object()

    Function()

    RegExp()

    Date()

    Error()

    Symbol()

    构造函数创建出来的是封装了基本类型值的封装对象

    var a = new String( "abc" ); typeof a; //"object" a instanceof String; //true Object.prototype.toString.call( a ); //"[object String]"

    内部属性[[class]]

    所有typeof返回值为"object"的对象都包含一个内部属性[[class]](我们可以把它看作一个内部的分类,而非传统的面向对象意义上的类)。这个属性无法直接访问,一般通过Object.prototype.toString(..)来查看

    Object.prototype.toString.call("abc"); //"[object String]" Object.prototype.toString.call( 42 ); //"[object Number]" Object.prototype.toString.call( true ); //"[object Boolean]"

    上例中基本类型被各自的封装对象自动包装,所以它们的内部[[class]] 属性值分别为 "String" ,"Number", "boolean".

    封装对象包装

    封装对象扮演着十分重要的角色,由于基本类型值没有  .length和  .toString()这样的属性和方法,需要通过封装对象才能访问,此时javascript会自动为基本类型值包装一个封装对象

    如果想要自己封装基本类型值,可以使用Object(...)函数

    var a = "abc"; var b = new String( a ); var c = Object( a ); typeof a; //"string" typeof b; //"object" typeof c; //"object" b instanceof String; c instanceof String; Object.prototype.toString.call( b ); //"[object String]" Object.prototype.toString.call( c ); //"[object String]"

    拆封

    如果想要得到封装对象中的基本类型值,可以使用valueOf()函数:

    var a = new String( "abc" ); var b = new Number( 42 ); var c = new Boolean( true ); a.valueOf(); //"abc" b.valueOf(); //42 c.valueOf(); //true

    在必要的时候 javascript 会进行隐式拆封

    Date(...)和Error(...)

    Date()用来获得当前的时间

    Error()主要是为了获得当前运行栈的上下文(大部分js引擎通过 只读属性.stack来访问)

    栈上下文信息包括函数调用栈信息和产生错误的代码的行号,可以用来debug

    Object(...) Function(....)  RegExg(...)

    这三个并不经常使用

    Symbol(...)

    不能使用new来构造,直接使用Symbol()构造

    原生原型

    原生构造函数有自己的 .prototype对象,如Array.prototype,String.prototype

    这些对象包含其对应子类型所特有的行为特征

    例如,将字符串值封装为字符串对象之后,就能访问String.prototype中定义的方法

    根据文档约定,我们将String.prototype.XYZ简写为 String#XYZ

    String#indexOf(..)

    在字符串中找到子字符串的位置

    String#charAt(..)

    获得字符串指定位置上的字符

    String#substr(...)

    获得字符串的指定部分

    String#substr(..),String#substring(..) ,String#slice(..)

    将字符串转换为大写或者小写

    String#toUpperCase() String#toLowerCase()

    去掉字符串前后的空格,返回新的字符串

    String#trim()

    去掉字符串前后的空格,返回新的字符串

    以上方法并不改变原字符串的值,而是返回一个新的字符串,借助原型代理,所有字符串都可以访问这些方法

    将原型作为默认值

    Function.prototype是一个空函数,RegExp.prototype是一个空的正则表达式,而Array.prototype是一个空数组。对于为赋值的变量来说,它们是很好的默认值

    function isThisCool(vals,fn,rx){ vals = vals || Array.prototype; fn = fn || Function.prototype; rx = rx || RegExp.prototype; return rx.test( vals.map ( fn ).join( "" ); ); }//默认值 isThisCool(); isThisCool(["a","b","c"],function(v) { return v.toUpperCase(); }, /D/) 赋给定的值

     

    Processed: 0.008, SQL: 9