javascript常用方法

目录

sort

含义:排序
用法:array.sort();
但是: sort() 方法也会根据测试字符串的结果改变原来的顺序。因为数值 5 虽然小于 10,但在进行字符串比较时, "10" 则位于 "5" 的前面
那么:可以定义一个排序的规则方法,然后传给sort
eg:

var descFun = function(a, b){     // 若a>b,则b-a<0,负不动,排序:a, b
  return b-a;
}
array.sort(descFun);    //实现降序排列
【当sort接受到负值时,则不动;正数则交换。0也不动。】

reverse

含义:倒序
用法:array.reverse();

函数的属性和方法

属性

每个函数都包含两个属性:length & prototype

length

表示函数希望接收的命名参数的个数。
eg:

function sum(num1, num2){
  return num1 + num2;
}

alert(sum.length);        //2

prototype

[引]对于ECMAScript 中的引用类型而言, prototype 是保存它们所有实例方法的真正所在。换句话说,诸如toString() 和 valueOf() 等方法实际上都保存在 prototype 名下,只不过是通过各自对象的实例访问罢了。

方法

每个函数都包含两个非继承而来的方法: apply() & call()
用途: 都是 可以在特定作用域中调用函数。

apply()

functionName.apply(作用域,参数数组);

第二个参数可以是 Array 的实例,也可以是arguments 对象。
eg:

function sum(num1, num2){
    return num1 + num2;
}
function callSum1(num1, num2){
    return sum.apply(this, arguments); // 传入 arguments 对象
}
function callSum2(num1, num2){
    return sum.apply(this, [num1, num2]); // 传入数组
}
alert(callSum1(10,10)); //20
alert(callSum2(10,10)); //20

call()

functionName.call(作用域,参数1,参数2,...);

eg:

function sum(num1, num2){
    return num1 + num2;
}
function callSum(num1, num2){
    return sum.call(this, num1, num2);
}
alert(callSum(10,10)); //20

[亮点]传递参数并非 apply() 和 call() 真正的用武之地;它们真正强大的地方是能够扩充函数赖以运行的作用域。
eg:

window.color = "red";
var o = { color: "blue" };
function sayColor(){
    alert(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(window); //red
sayColor.call(o); //blue

使用 call() (或 apply() )来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。

[扩充]bind()

ECMAScript 5 还定义了一个方法: bind() 。这个方法会创建一个函数的实例,其 this 值会被绑
定到传给 bind() 函数的值。例如:

window.color = "red";
    var o = { color: "blue" };
    function sayColor(){
    alert(this.color);
}
var objectSayColor = sayColor.bind(o);
objectSayColor(); //blue

支持 bind() 方法的浏览器有 IE9+、Firefox 4+、Safari 5.1+、Opera 12+和 Chrome。

每个函数继承的 toLocaleString() 、 toString() 、valueOf()方法始终都返回函数的代码。

万能的splice

(for Array)
splice可以完成数组元素的删除、插入、替换的功能,非常好用!

  • 删除
array.splice(起始位置,删除的个数);
  • 插入
array.splice(起始位置,0,插入的元素);
  • 替换
array.splice(起始位置,1,替换的元素);

日期对象date

当前时间:var now = new Date();

结果格式:
Wed Apr 06 2016 15:50:50 GMT+0800 (中国标准时间)

指定某个时间: var date = new Date('2016-04-06');

结果:
Wed Apr 06 2016 08:00:00 GMT+0800 (中国标准时间)

常用的Date 对象方法:

  • getHours 返回小时 (0 ~ 23) - 时
  • getMinutes 返回分钟(0 ~ 59) - 分
  • getSeconds 返回秒数(0 ~ 59) - 秒
  • getDate 返回一个月中的某一天(1 ~ 31) - 日
  • getDay 返回一周中某一天(0 ~ 6) - 星期
  • getMonth 返回某月(0 ~ 11) - 月
  • getFullYear 返回4位数年份 - 年

用法eg:
now.getHours();

  • setDate()方法 用于设置一个月的某一天。
    dateObject.setDate(day) //day 必需,表示一个月中的一天的一个数值(1 ~ 31)。
    eg:
var d = new Date(2016,1,1);    // 第二个参数范围是0~11,d是2016年2月1日
d.setDate(29);                 // 2016年的2月有29天,则,setDate之后d变成2016年2月29日
d.setDate(30);                 // 30>29,所以当前日期变成2016年3月1日

parseint

(是parseInt,因为标题处不允许写大写,所以写了小写。)
解析一个字符串,并返回一个整数。
用法:parseInt('字符串',基数); //基数是10进制?2进制?8进制?16进制。。。基数非必填,则以 10 为基础来解析。

parseInt("10");			//返回 10
parseInt("19",10);		//返回 19 (10+9)
parseInt("11",2);		//返回 3 (2+1)
parseInt("17",8);		//返回 15 (8+7)
parseInt("1f",16);		//返回 31 (16+15)
parseInt("010");		//未定:返回 10 或 8

object的keys方法

要取得对象上所有可枚举的实例属性,可以使用 ECMAScript 5 的 Object.keys() 方法。
这个方法接收一个对象作为参数,返回一个包含所有可枚举属性的字符串数组。

function Person(){
}
Person.prototype.name = "Nicholas";
Person.prototype.age = 29;
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function(){
    alert(this.name);
};


var keys = Object.keys(Person.prototype);
alert(keys); //"name,age,job,sayName"

var p1 = new Person();
p1.name = "Rob";
p1.age = 31;
var p1keys = Object.keys(p1);
alert(p1keys); //"name,age"

这里,变量 keys 中将保存一个数组,数组中是字符串 "name" 、 "age" 、 "job" 和 "sayName" 。这个顺序也是它们在 for-in 循环中出现的顺序。如果是通过 Person 的实例调用,则 Object.keys()返回的数组只包含 "name" 和 "age" 这两个实例属性。

如果你想要得到所有实例属性,无论它是否可枚举,都可以使用 Object.getOwnPropertyNames()方法。

var keys = Object.getOwnPropertyNames(Person.prototype);
alert(keys); //"constructor,name,age,job,sayName"

注意结果中包含了不可枚举的 constructor 属性。 Object.keys() 和 Object.getOwnProperty-Names() 方法都可以用来替代 for-in 循环。支持这两个方法的浏览器有 IE9+、Firefox 4+、Safari 5+、Opera12+和 Chrome。

因为keys的返回值是数组,所以可以利用keys来把Object类型转Array类型,在兼容的情况下,可以用哟!

posted @ 2016-04-02 14:54  Sameen  阅读(132)  评论(0编辑  收藏  举报