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"
来源:CSDN
作者:会做饭的技术男
链接:https://blog.csdn.net/u011927449/article/details/104054582