JS核心

来源:互联网 发布:软件行业的外包 编辑:程序博客网 时间:2024/05/01 13:33

JS核心

1.实例化对象

 objectName = new objectType (param1 [,param2] ...[,paramN])

  参数  objectName 新对象实例的名称。 

       objectType  对象类型。它必须是一个定义对象类型的函数。 

       param1...paramN  对象的属性值。这些属性是objectType 函数的参数。 

  示例 1:对象类型和对象实例

      function car(make, model, year) {

      this.make = make

      this.model = model

      this.year = year

      }

  实例化对象:mycar =new car("Eagle", "Talon TSi", 1993)

  示例 2: 对象属性就是另外一个对象。

  function person(name, age, sex) {

  this.name = name

   this.age = age

  this.sex = sex

   }

 rand = new person("Rand McNally", 33, "M")

  ken= new person("Ken Jones", 39, "M")

 function car(make, model, year, owner) {

  this.make = make;

  this.model = model;

  this.year = year;

  this.owner = owner;

 }

 car1= new car("Eagle", "Talon TSi", 1993, rand);

 car2= new car("Nissan", "300ZX", 1992, ken)

 car2.owner.name      //引用

2.this关键字用于引用当前对象,通常情况下,方法中的 this 指调用它的对象。

3.语句

  1)for..in 对一个对象的所有属性重复赋给一个特定变量,JavaScript 会对每个不同的属性都执行特定的语句。

   var array=[1,2,3,4,5];//定义一个数组,实现数组元素的遍历。

    用For...in实现

   for(var i in array){

   alert(array[i]);//数组的元素

    用for循环实现

   for(var i=0;i<array.length;i++){

   alert(array[i]);//数组的元素

    }

  2)delete语句:删除对象的属性,或者删除数组中的指定元素。

   delete objectName.property

   delete objectName[index]

   delete property

   注意:如果 delete 操作符成功的话,它就会将元素的属性设定为未定义;操作符总是返回未定义。

        你只能使用 delete 操作符删除对象属性或数组元素。你不能使用该操作符删除对象或变量。因此,你就只能在 with 语句中使用第三种格式,以便删除对象的属性。

  3)export //允许标明的脚本向其它标明或未标明的脚本提供属性、函数和对象。

    export name1, name2, ..., nameN

    export *

  4)import //允许脚本从标识的脚本中导入已经导出的属性、函数和对象。

    import objectName.name1, objectName.name2, ..., objectName.nameN

    import objectName.*

  5)with //为一组语句创建缺省的对象。在这一组语句中,任何不指定对象的属性引用都将被认为是缺省对象的。

    with (object){

   statements

    }

 例子:var a, x,y

      var r=10

      with (Math) {

      a = PI * r * r

      x = r * cos(PI)

      y = r * sin(PI/2)

     }  

4.Array对象:

  构造函数:newArray( )

           new Array(size)

           new Array(element0, element1, ..., elementn)

  方法:

  1)array.concat(value, ...)  // 连接数组,要增加到array中的值,可以是任意多个。

     注:方法concat()将创建并返回一个新数组,这个数组是将所有参数都添加到array中生成的。它并不修改array。如果要进行concat()操作的参数是一个数组,那么添加的是数组中的元素,而不是数组。

     例子:var a =[1,2,3];

          a.concat(4, [5,[6,7]])  //返回[1,2,3,4,5,[6,7]]

  2)array.join( )     //将数组元素连接起来以构建一个字符串,—个字符串,通过把array的每个元素转换成字符串,然后把这些字符串连接起来,在两个元素之间插入separator字符串而生成。

    array.join(separator)

     例子:a = newArray(1, 2, 3, "testing");

          s = a.join("+");  // s 是字符串"1+2+3+testing"

  3)Array.length //数组的长度

     注:数组的length属性总是比数组中定义的最后一个元素的下标大一。对于那些具有连续元素,而且以元素0开始的常规数组来说,属性length声明了数组中的元素个数。

设置属性length的值可以改变数组的大小。如果设置的值比它的当前值小,数组将被截断,其尾部的元素将丢失。如果设置的值比它的当前值大,数组将增大,新元素被添加到数组尾部,它们的值为undefined。

  4)array.pop( ) //删除并返回数组的最后一个元素,方法pop()将删除array的最后一个元素,把数组长度减1,并且返回它删除的元素的值。如果数组已经为空,则pop()不改变数组,返回undefined。

  5)array.push(value, ...)  //给数组添加元素,要添加到array尾部的值,可以是一个或多个,返回指定的值添加到数组后的新长度,方法push()将把它的参数顺次添加到array的尾部。它直接修改array,而不是创建——个新的数组。方法push()和方法pop()用数组提供先进后出栈的功能。参阅“Array.pop()”

  6)array.reverse( )   //Array对象的方法reverse()将颠倒数组中元素的顺序。它在原数组上实现这一操作,即重排指定的array的元素,但并不创建新数组。如果对array有多个引用,那么通过所有引用都可以看到数组元素的新顺序。

    例子:a = newArray(1, 2, 3);    // a[0] == 1, a[2] ==3;

        a.reverse(  );          // Now a[0] == 3, a[2] == 1;

  7)Array.shift( )   //将array的第—个元素移出数组,返回那个元素的值,并且将余下的所有元素前移一位,以填补数组头部的空缺。如果数组是空的,shift()将不进行任何操作,返回undefined。注意,该方法不创建新数组,而是直接修改原有的数组。

方法shift()和方法Array.pop()相似,只不过它在数组头部操作,而不是在尾部操作。该方法常常和unshift()一起使用。

  例子:var a =[1, [2,3], 4]

       a.shift(  );  // 返回 1; a = [[2,3], 4]

       a.shift(  );  // 返回 [2,3]; a = [4]

 8)array.slice(start, end) //回数组的一部分,或者说是一个子数组。返回的数组包含从start 开始到end之间的所有元素,但是不包括end所指的元素。如果没有指定end,返回的数组包含从start开始到原数组结尾的所有元素,该方法并不修改数组。如果想删除数组中的一段元素,应该使用方法Array.splice。

    例子:var a =[1,2,3,4,5];

         a.slice(0,3);    // 返回 [1,2,3]

 9)array.sort( )           //将按字母顺序(更为精确地说,是按照字符编码的顺序)对数组中的元素进行排序。

   array.sort(orderfunc)   //按数字排序

 10)array.splice(start, deleteCount, value, ...)  //插入、删除或替换数组的元素;start:开始插入和(或)删除的数组元素的下标。deleteCount:从start开始,包括start所指的元素在内要删除的元素个数。value:要插人数组的零个或多个值,从start所指的下标处开始插入。如果从array中删除了元素,返回的是含有被删除的元素的数组。

    例子:var a =[1,2,3,4,5,6,7,8]

         a.splice(4);        // 返回 [5,6,7,8];a is [1,2,3,4]

 11)array.toLocaleString( )  //数组array的局部字符串表示;数组的方法toString()将返回数组的局部字符串表示。它首先调用每个数组元素的toLocaleString()方法,然后用地区特定的分隔符把生成的字符串连接起来,形成一个字符串。

   TypeError                //调用该方法时,如果对象不是Array,则抛出异常。

 12)array.unshift(value, ...)  //要插入数组头部的一个或多个值,返回值:数组的新长度,unshift()不创建新数组,而是直接修改原有的数组。

    例子:var a =[];             // a:[]

         a.unshift(1);           //a:[1]          返回 1

          a.unshift(22);          // a:[22,1]       返回 2

5.Boolean对象:

  newBoolean(value) //构造函数

 Boolean(value) //转换函数

  注:当作为一个构造函数(带有运算符new)调用时,Boolean()将把它的参数转换成一个布尔值,并且返回一个包含该值的Boolean对象。如果作为一个函数(不带有运算符new)调用的,Boolean()只将它的参数转换成一个原始的布尔值,并且返回这个值。

 0、NaN、null、空字符串""和undefined都将转换成false。其他的原始值,除了false(但包括字符串"false"),以及其他的对象和数组都会被转换成true。

 toString( )   //根据Boolean对象代表的布尔值返回"true"或"false"。

 valueOf( )    //返回Boolean对象中存放的原始布尔值。

6.Error对象:

  newError(  )

  newError(message)   //message 提供异常的详细信息的错误消息,可选;name:声明异常类型的字符串。对于Error类的实例和所有子类来说,该属性声明了用于创建实例的构造函数名。

  属性:error.message可以读取的错误消息;error.name 错误的类型;

  方法:Object.toString();

  例子:functionfactorial(x) {

       if (x < 0) throw new Error("factorial: x must be >= 0");

       if (x <= 1) return 1; else return x * factorial(x-1);

       }

       error.toString( )  //把Error对象转换成字符串

       new SyntaxError( )

       new SyntaxError(message)  //抛出该错误用来通知语法错误

       new RangeError(  )

       new RangeError(message)   //当一个值超出有效范围时发生的错误。主要有几种情况,一是数组长度为负数,二是Number对象的方法参数超出范围,以及函数堆栈超过最大值。

       new ReferenceError( )

       new ReferenceError(message) //引用一个不存在的变量时发生的错误,获将将一个值分配给无法分配的对象,比如对函数的运行结果或者this赋值。

       new TypeError(  )

       new TypeError(message)      //变量或参数不是预期类型时发生的错误。比如,对字符串、布尔值、数值等原始类型的值使用new命令,就会抛出这种错误,因为new命令的参数应该是一个构造函数。

       new URIError(  )

       new URIError(message)       //URI相关函数的参数不正确时抛出的错误,主要涉及encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent()、escape()和unescape()这六个函数。

7.Function对象:

 用法:1)充当Function对象的构造函数使用,用于结合new关键字构造一个新的Function对象。

          new Function( [ argName1 [, argName1 [, argNameN... [, funcBody ]]]])  eg:var sum = newFunction("x", "y", "return x + y;");

      2)当作普通函数使用,其行为与用法一(使用new关键字)完全一致,相当于用法一省略了new关键字。

          Function( [ argName1 [, argName1 [, argNameN... [, funcBody ]]]] )

          eg:var foo = Function('var name="CodePlayer";document.writeln(name);');

 arguments:属性是正在执行的函数的内置属性,返回该函数的arguments对象。arguments对象包含了调用该函数时所传入的实际参数信息(参数个数、参数值等)。

  属性:length属性,functionObject.length;返回实际传入的参数个数。                

       caller属性,functionObject.caller;返回当前函数的引用(匿名函数可以使用该属性实现递归调用),也就是调用当前函数的函数。

       0...n属性,以顺序索引访问传入的具体参数。例如,使用arguments[0]可以访问传入的第1个参数,arguments[1]可以访问传入的第2个参数。

 apply() 方法:functionObject.apply([ thisObj [, argsArray ]] );apply()函数用于调用当前函数functionObject,并可同时使用指定对象thisObj作为本次函数执行时函数内部的this指针引用。

  注:如果提供了argsArray参数,则该参数必须是一个数组,或者arguments对象。数组中的每个元素(arguments对象中的每个属性0...n)将按照顺序作为参数传入该函数。

     如果提供了argsArray参数,则必须提供thisObj参数。

  eg:var obj ={name: "李四", age: 20};

     // 更改内部的this指针引用对象为obj

     test.apply(obj); // [object Object] 李四 20

     function foo(a, b){

     document.writeln(this.name);   

     document.writeln(a);   

     document.writeln(b);   

     }

     // 改变this引用为obj,同时传递两个参数

     foo.apply(obj, [12, true]); // 李四 12 true

 call()方法:functionObject.call([ thisObj [, arg1 [, arg2 [, args...]]]] )

  注:该函数与Function对象的apply()函数作用相同,只不过call()函数是将Function对象的参数一个个分别传入,apply()函数是将Function对象的参数以一个数组或arguments对象的形式整体传入。

 eg:var obj = {name: "李四", age: 20};

    // 更改内部的this指针引用对象为obj

    test.call(obj); // [object Object] 李四 20

    function foo(a, b){

    document.writeln(this.name);   

    document.writeln(a);   

    document.writeln(b);   

    }

    // 改变this引用为obj,同时传递两个参数

    foo.call(obj, 12, true); // 李四 12 true

 toString()方法:object.toString()函数用于将当前对象以字符串的形式返回。  

  var date = new Date(2013, 7, 18, 23, 11, 59, 230);

  document.writeln( date.toString() ); // Sun Aug 18 2013 23:11:59 GMT+0800(中国标准时间)

8.Math对象:

  方法:Math.PI 

       Math.abs( number )   //number的绝对值;

       Math.ceil( number )  //Math.ceil()函数用于返回大于或等于指定数字的最小整数,一般称为向上取整。

       Math.floor()         //函数用于返回小于或等于指定数字的最大整数,一般称为向下取整。

       Math.floor( number ) //函数用于返回小于或等于指定数字的最大整数,一般称为向下取整。

       Math.random( )       //函数用于返回介于 0 到 1 之间的伪随机数(不包括 1)。

 

9.Number对象:

  用法:1)充当Number对象的构造函数使用,用于结合new关键字构造一个表示数值的Number对象。

         new Number( [ value ] )     eg:varnumObj4 = new Number( "CodePlayer" ); // NaN

      2)当作普通函数使用,将其它数据类型转换为Number数据类型的原始数值。简而言之,这是一个类型转换函数。

         Number( [ value ] )

  属性:Number.MAX_VALUE//属性返回JavaScript中可以表示的最大数值。其值约等于1.7976931348623157E+308。

       Number.MIN_VALUE //属性返回JavaScript中可以表示的最接近于0(但不等于0)的数。其值为5E-324。

       Number.NaN   //Number.NaN的值为Number类型,其值一般为NaN。属性是一个特殊值,用于表示算术表达式返回了非数字值,该属性为Number对象的一个只读属性(准确地说,是一个常量)。

       Number.NEGATIVE_INFINITY  //负的无穷大  {输出显示为-Infinity)

       Number.POSITIVE_INFINITY  //正的无穷大  (输出显示为Infinity)

  方法:numberObject.toExponential([ fractionalDigits ] )//函数返回一个字符串,该字符串以指数计数法表示当前数值。

    注:如果没有提供fractionDigits参数,则toExponential()方法将返回足够多位数字,以便唯一指定该数字。

       如果提供了参数,则参数fractionDigits必须介于 [0, 20] 之间,否则将报错。

       如果数字本身的小数位数大于参数fractionDigits,则根据第fractionDigits + 1位小数上的值进行四舍五入。

   eg:var num = 423.536;

       document.writeln( num.toExponential() ); // 4.23536e+2

       numberObject.toFixed( [ fractionalDigits ] )

    注:如果没有提供fractionDigits参数或其参数值为undefined,则fractionDigits参数将默认为0。

       如果提供了参数,则参数fractionDigits必须介于 [0, 20] 之间,否则将报错。

       如果数字本身的小数位数多于参数fractionDigits,则根据第fractionDigits + 1位小数上的值进行四舍五入。

       Number.toString( [ radix ])   //函数返回表示该数字的指定进制形式的字符串。

       注:参数radix支持 [2, 36] 之间的整数。例如:参数值为2,则表示二进制;为8,则表示八进制;为16,则表示十六进制。

       object.valueOf( )   //函数用于返回指定对象的原始值。

10.Date对象:

   用法:1)Date( ) //当作普通函数使用,直接以字符串形式返回当前日期和时间。

        2)充当Date对象的构造函数使用,用于结合new关键字构造一个表示日期或时间的Date对象。Date()构造函数又有如下两种形式。

           // 形式一

           new Date( [ milliseconds ] )

           // 形式二

           new Date( year, month, day [, hours [, minutes [, seconds [, ms ]]]] )

    方法:date.getDate()  //getDate()函数用于使用当地时间返回当前Date对象中一个月第几天的值。也就是"年份-月份-日期"中"日期"的数值。例如:2013年7月15日,就返回15。

         eg:// 定义一个"1999-05-30 12:11:59 230"的Date对象

            var date2 = new Date(1999, 4,30, 12, 11, 59, 230);

            document.writeln( date2.getDate() ); // 30

         date.getDay( )   //函数用于使用当地时间返回当前Date对象中该天的星期值。

         eg.// 定义一个"2013-07-21"的Date对象

            var date = new Date(2013, 6, 21);

            // 星期天

           document.writeln( date.getDay() ); // 0

         date.getFullYear( )   // 函数用于使用当地时间返回当前Date对象中的年份值。也就是"年月日"中"年"的数值。例如:2013年7月15日,就返回2013;公元前123年5月12日,就返回-123。

         date.getTime( )       //函数用于使用当地时间返回当前Date对象中的时间值。该时间值表示从1970年1月1日午夜开始,到当前Date对象时,所经过的毫秒数,以格林威治时间为准。

         eg.// 定义一个"1970-01-01 08:00:00 000"的Date对象

            // 由于当前环境为北京GMT+8时区,所以与GMT有8个小时的差值

            var date2 = new Date(1970, 0, 1, 8);

            document.writeln( date2.getTime() ); // 0

          date.toLocaleDateString( )   //函数用于以字符串的形式返回当前Date对象。该字符串适用于宿主环境的当前区域设置(也就是说,已经过"本地化"处理,易于当地用户阅读),并且只包含"年月日"部分的短日期信息。

         eg.//定义一个"2013-07-21"的Date对象

            var date = new Date(2013, 6, 21, 13, 12, 59, 231);

            document.writeln( date.toLocaleDateString() );

         date.toLocaleString( ) //函数的返回值为String类型,返回一个表示该Date对象的"本地化"字符串,且包含年月日时分秒部分的日期信息。

         date.toTimeString( )   //以字符串的形式返回当前Date对象。该字符串只包含"时分秒"部分的时间信息。

11.RegExp对象:

     正则表达式(英语:RegularExpression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。

     搜索模式可用于文本搜索和文本替换。

    语法:1)直接量语法:/pattern/attributes  ;/正则表达式主体/修饰符(可选)

         2)new RegExp(pattern, attributes);attributes:一个可选的字符串,包含属性“g”、“i”和“m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配;

    方法:search() 方法:

         1)search() 方法使用正则表达式

            var str = "Visit Runoob!";

            var n = str.search(/Runoob/i);   //输出6

         2)search() 方法使用字符串

            var str = "Visit Runoob!";

            var n = str.search("Runoob");

         replace() 方法:

         1)replace() 方法使用正则表达式

            var str = document.getElementById("demo").innerHTML;

            var txt = str.replace(/microsoft/i,"Runoob");

         2)replace() 方法使用字符串

    RegExp对象方法:

         1)test() 方法是一个正则表达式方法,test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

            eg:var patt = /e/;

                patt.test("The best thingsin life are free!");

         2)exec()exec() 方法用于检索字符串中的正则表达式的匹配。该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。

           /e/.exec("The best things in life are free!");

12.String对象:

    1)字符串查找:indexOf() 来定位字符串中某一个指定的字符首次出现的位置,没找到返回-1;

       var str="Hello world, welcome to the universe.";

       var n=str.indexOf("welcome");

    2)内容匹配:match()函数用来查找字符串中特定的字符,并且如果找到的话,则返回这个字符。

       var str="Hello world!";

       document.write(str.match("world") + "<br>");

    3)替换内容:replace() 方法在字符串中用某些字符替换另一些字符。

       str="Please visit Microsoft!"

       var n=str.replace("Microsoft","w3cschool");

    4)字符串大小写转换:字符串大小写转换使用函数 toUpperCase() / toLowerCase():

       var txt="Hello World!";      // String

       var txt1=txt.toUpperCase();   //txt1 文本会转换为大写

       var txt2=txt.toLowerCase();   //txt2 文本会转换为小写

    5)字符串转为数组:

       txt="a,b,c,d,e"   //String

       txt.split(",");   // 使用逗号分隔

       txt.split(" ");   // 使用空格分隔

       txt.split("|");   // 使用竖线分隔

    6)连接字符串:Array.concat( )

       var a = [1,2,3];

       a.concat(4, 5)          //返回[1,2,3,4,5]

    7)String.substr( ):返回一个子字符串;string.substr(start,length)

       var s = "abcdefg";

       s.substr(2,2);   // 返回"cd"

 

 

1 0