js中array对象的常用方法,JS Array的语法格式
今天给各位分享js中array对象的常用方法的知识,其中也会对JS Array的语法格式进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Javascript中数组的常用方法有哪些
concat()连接两个或更多的数组,并返回结果。
join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop()删除并返回数组的最后一个元素
push()向数组的末尾添加一个或更多元素,并返回新的长度。
reverse()颠倒数组中元素的顺序。
shift()删除并返回数组的第一个元素
slice()从某个已有的数组返回选定的元素
sort()对数组的元素进行排序
splice()删除元素,并向数组添加新元素。
toSource()返回该对象的源代码
toString()把数组转换为字符串,并返回结果。
toLocaleString()把数组转换为本地数组,并返回结果。
unshift()向数组的开头添加一个或更多元素,并返回新的长度。
valueOf()返回数组对象的原始值
JavaScript中判断对象类型的几种方法总结_基础知识
我们知道,JavaScript中检测对象类型的运算符有:typeof、instanceof,还有对象的constructor属性:
1) typeof运算符 typeof是一元运算符,返回结果是一个说明运算数类型的字符串。如:"number","string","boolean","object","function","undefined"(可用于判断变量是否存在)。但 typeof的能力有限,其对于Date、RegExp类型返回的都是"object"。如:
typeof{};//"object"
typeof [];//"object"
typeof new Date();//"object"
所以它只在区别对象和原始类型的时候才有用。要区一种对象类型和另一种对象类型,必须使用其他的方法。如:instanceof运算符或对象的 constructor属。
2)instanceof运算符。 instanceof运算符要求其左边的运算数是一个对象,右边的运算数是对象类的名字或构造函数。如果 object是 class或构造函数的实例,则 instanceof运算符返回 true。如果 object不是指定类或函数的实例,或者 object为 null,则返回 false。如:
[] instanceof Array;// true
[] instanceof Object;// true
[] instanceof RegExp;// false
new Date instanceof Date;// true
所以,可以用instanceof运算符来判断对象是否为数组类型:
function isArray(arr){
return arr instanceof Array;
}
3)constructor属性。 JavaScript中,每个对象都有一个constructor属性,它引用了初始化该对象的构造函数,常用于判断未知对象的类型。如给定一个求知的值通过typeof运算符来判断它是原始的值还是对象。如果是对象,就可以使用constructor属性来判断其类型。所以判断数组的函数也可以这样写:
function isArray(arr){
return typeof arr=="object"&& arr.constructor== Array;
}
很多情况下,我们可以使用instanceof运算符或对象的constructor属性来检测对象是否为数组。例如很多JavaScript框架就是使用这两种方法来判断对象是否为数组类型。但是检测在跨框架(cross-frame)页面中的数组时,会失败。原因就是在不同框架(iframe)中创建的数组不会相互共享其prototype属性。例如:
代码如下:
window.onload=function(){
var iframe_arr=new window.frames[0].Array;
alert(iframe_arr instanceof Array);// false
alert(iframe_arr.constructor== Array);// false
}
在Ajaxian上看到了一种精确的检测方法,跨原型链调用toString()方法:Object.prototype.toString()。可以解决上面的跨框架问题。当Object.prototype.toString(o)执行后,会执行以下步骤: 1)获取对象o的class属性。 2)连接字符串:"[object"+结果(1)+"]" 3)返回结果(2)例如:
Object.prototype.toString.call([]);//返回"[object Array]"
Object.prototype.toString.call(/reg/ig);//返回"[object RegExp]"
这样,我们就可以写一个健壮的判断对象是否为数组的函数:
代码如下:
function isArray(arr){
return Object.prototype.toString.call(arr)==="[object Array]";
}
此种方法得到国外多个javaScript大师的认可,在即将发布的jQuery 1.3中将使用这种方法来检测数组。 prototype.js的一个维护者写了下面这个函数,用于获取对象的类型名
代码如下:
/**
* Returns internal [[Class]] property of an object
*
* Ecma-262, 15.2.4.2
* Object.prototype.toString()
*
* When the toString method is called, the following steps are taken:
* 1. Get the [[Class]] property of this object.
* 2. Compute a string value by concatenating the three strings"[object", Result(1), and"]".
* 3. Return Result(2).
*
* __getClass(5);//=>"Number"
* __getClass({});//=>"Object"
* __getClass(/foo/);//=>"RegExp"
* __getClass('');//=>"String"
* __getClass(true);//=>"Boolean"
* __getClass([]);//=>"Array"
* __getClass(undefined);//=>"Window"
* __getClass(Element);//=>"Constructor"
*
*/
function __getClass(object){
return Object.prototype.toString.call(object).match(/^\[object\s(.*)\]$/)[1];
};
扩展一下,用于检测各种对象类型:
var is={
types: ["Array","Boolean","Date","Number","Object","RegExp","String","Window","HTMLDocument"]
};
for(var i= 0, c; c= is.types[i++ ];){
is[c]=(function(type){
return function(obj){
return Object.prototype.toString.call(obj)=="[object"+ type+"]";
}
)(c);
}
alert(is.Array([]));// true
alert(is.Date(new Date));// true
alert(is.RegExp(/reg/ig));// true
node.js 有哪些全局对象
全局对象与全局变量
global最根本的作用是作为全局变量的宿主。按照ECMAScript的定义,满足以下条件的变量是全局变量:
在最外层定义的变量;
全局对象的属性;
隐式定义的变量(未定义直接赋值的变量)。
当你定义一个全局变量时,这个变量同时也会成为全局对象的属性,反之亦然。需要注意的是,在Node.js中你不可能在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。
注意:永远使用var定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。
process
process是一个全局变量,即 global对象的属性。
它用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口。通常在你写本地命令行程序的时候,少不了要和它打交道。下面将会介绍process对象的一些最常用的成员方法。
process.argv是命令行参数数组,第一个元素是 node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。
console.log(process.argv);
将以上代码存储为argv.js,通过以下命令运行:
$ node argv.js 1991 name=byvoid--v"Carbo Kuo"
['node',
'/home/byvoid/argv.js',
'1991',
'name=byvoid',
'--v',
'Carbo Kuo' ]
process.stdout是标准输出流,通常我们使用的 console.log()向标准输出打印字符,而 process.stdout.write()函数提供了更底层的接口。
process.stdin是标准输入流,初始时它是被暂停的,要想从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。
process.stdin.resume();
process.stdin.on('data', function(data){
process.stdout.write('read from console:'+ data.toString());
});
process.nextTick(callback)的功能是为事件循环设置一项任务,Node.js会在下次事件循环调响应时调用 callback。
初学者很可能不理解这个函数的作用,有什么任务不能在当下执行完,需要交给下次事件循环响应来做呢?
我们讨论过,Node.js适合I/O密集型的应用,而不是计算密集型的应用,因为一个Node.js进程只有一个线程,因此在任何时刻都只有一个事件在执行。
如果这个事件占用大量的CPU时间,执行事件循环中的下一个事件就需要等待很久,因此Node.js的一个编程原则就是尽量缩短每个事件的执行时间。process.nextTick()提供了一个这样的工具,可以把复杂的工作拆散,变成一个个较小的事件。
functiondoSomething(args, callback){
somethingComplicated(args);
callback();
}
doSomething(functiononEnd(){
compute();
});
我们假设compute()和somethingComplicated()是两个较为耗时的函数,以上的程序在调用
doSomething()时会先执行somethingComplicated(),然后立即调用回调函数,在 onEnd()中又会执行
compute()。下面用process.nextTick()改写上面的程序:
functiondoSomething(args, callback){
somethingComplicated(args);
process.nextTick(callback);
}
doSomething(functiononEnd(){
compute();
});
改写后的程序会把上面耗时的操作拆分为两个事件,减少每个事件的执行时间,提高事件响应速度。
注意:不要使用setTimeout(fn,0)代替process.nextTick(callback),前者比后者效率要低得多。
我们探讨了process对象常用的几个成员,除此之外process还展示了process.platform、 process.pid、process.execPath、process.memoryUsage()等方法,以及POSIX进程信号响应机制。
console
console用于提供控制台标准输出,它是由Internet Explorer的JScript引擎提供的调试工具,后来逐渐成为浏览器的事实标准。
Node.js沿用了这个标准,提供与习惯行为一致的 console对象,用于向标准输出流(stdout)或标准错误流(stderr)输出字符。 console.log():向标准输出流打印字符并以换行符结束。
console.log接受若干个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则以类似于C语言 printf()命令的格式输出。
第一个参数是一个字符串,如果没有参数,只打印一个换行。
console.log('Hello world');
console.log('byvoid%diovyb');
console.log('byvoid%diovyb', 1991);
运行结果为:
Hello world
byvoid%diovyb
byvoid1991iovyb
console.error():与console.log()用法相同,只是向标准错误流输出。
console.trace():向标准错误流输出当前的调用栈。
console.trace();
运行结果为:
Trace:
at Object.<anonymous>(/home/byvoid/consoletrace.js:1:71)
at Module._compile(module.js:441:26)
at Object..js(module.js:459:10)
at Module.load(module.js:348:31)
at Function._load(module.js:308:12)
at Array.0(module.js:479:10)
at EventEmitter._tickCallback(node.js:192:40)
关于js中array对象的常用方法和JS Array的语法格式的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。