JS核心
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"
JS核心的更多相关文章
- Node.js核心入门
前言: 因为以前学习Node.js并没有真正意义上的去学习它,而是粗略的学习了npm的常用命令和Node.js一些模块化的语法,因此昨天花了一天的时间看了<Node.js开发指南>一书.通 ...
- JS核心系列:浅谈原型对象和原型链
在Javascript中,万物皆对象,但对象也有区别,大致可以分为两类,即:普通对象(Object)和函数对象(Function). 一般而言,通过new Function产生的对象是函数对象,其他对 ...
- JS核心系列:浅谈 call apply 与 bind
在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...
- node.js核心模块
全局对象 global 是全局变量的宿主 全局变量 在最外层定义的 全局对象的属性 隐士定义的变量(未定义直接赋值的变量) 当定义一个全局变量时 这个变量同时也会成为全局对象的属性 反之亦然 注意: ...
- JS核心笔记
一.说明 JS权威指南文字用红色标出: JS高级程序设计用橙色标出; 自己加上的文字用粉红色标出: 其(一)-(九)为JS权指南,(十)为JS高级程序设计 二.记法结构 2.1字符集 Javascri ...
- vue.js核心最基本的功能
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统: , text: , text: , text: '随便其它什么人吃的东西' } ] }}) 蔬菜 奶酪 随便其 ...
- Ext.Js核心函数( 三)
ExtJs 核心函数简介 1.ExtJs提供的常用函数2.get.fly.getCmp.getDom.getBody.getDoc3.query函数和select函数4.encode函数和decode ...
- node.js 核心http模块,起一个服务器,返回一个页面
let http=require("http"); //引入核心http模块 let fs=require("fs"); let mime={ '.js':'a ...
- JS核心之DOM操作 下
目录: 1.节点类型之Document类型 2.节点类型之Element类型 3.节点类型之Text类型 4.综合小示例 -- 动态添加外部样式文件 5.查找元素的扩展方法 接上篇,我们先来看常用的三 ...
随机推荐
- 采用个hook技术对writefile函数进行拦截(2)
http://www.cnblogs.com/zhxfl/archive/2011/11/03/2233846.html 这个是笔者之前写过的WriteFile HOOK代码 必须补充对这几个函数的H ...
- poj1151 Atlantis——扫描线+线段树
题目:http://poj.org/problem?id=1151 经典的扫描线问题: 可以用线段树的每个点代表横向被矩形上下边分割开的每一格,这样将一个矩形的出现或消失化为线段树上的单点修改: 每个 ...
- dubbo项目中包的依赖说明
依赖 (+) (#) 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策略. 缺省依赖 通过mvn dependency:tree > ...
- 联想Y450在Ubuntu下调节屏幕亮度
今天觉得ubuntu下编程时屏幕太亮,上网查了下怎样设置屏幕亮度,按住Fn 的同时调节,结果木有反应啊,杯催.... 继续搜索,最终解决了, happy... 1. 设置屏幕亮度初始值,解决reboo ...
- Sandy and Nuts
题意: 现在有一个$n$个点的树形图被拆开,现在你知道其中$m$条边,已经$q$对点的$LCA$,试求原先的树有多少种可能. 解法: 考虑$dp$,$f(x,S)$表示$x$的子树内的点集为$S$(不 ...
- 性能测试之Jmeter学习(一)
一.Jmeter的安装: 1.安装配置要求: Java版本: Jmeter要求完全兼容的Java6或更高版本(建议安装java 8或以上版本): 操作系统:是一个100%的Java程序,它在任何支持完 ...
- 安装openstack出现的问题及解决
感谢http://www.cnblogs.com/nmap/p/6417163.html,参考这篇文章,我在虚拟机上部署成功了,后来因为虚拟机实在带不动,所以改装到物理机上,在实验室找到两台物理机,分 ...
- visual editor ve1.5下载
eclipse官网的ve下载不了,下面这个能下 http://sourceforge.net/projects/visualeditor/files/latest/download
- jquery操作select(option)的取值,设置和选中
比如 <select class="selector"> <option value ="volvo">Volvo</option ...
- 51nod - 1420 - 数袋鼠好有趣 - 贪心 - 二分
https://www.51nod.com/Challenge/Problem.html#!#problemId=1420 一开始乱搞了一发,每个袋鼠二分找最小的能放它的,然后二分的范围从下一个开始保 ...