常用Object的属性和方法
创建空Object
var o1 = {};
var o2 = Object.create(Object.prototype);
创建Object
var o3 = {
str: "string...",
fun: function() {
return this.str;
}
};
给对象添加属性
Object.defineProperty(o1, "newPropertyName", { value: "str", enumerable: true, writable: true });
给对象添加多个属性
Object.defineProperties(o1, {
newPropertyName1: { value: "str1", writable: false },
newPropertyName2: { value: "str2", writable: true }
});
给对象添加getter
Object.defineProperty(o1, "logIt", {
get: function () {
return this.newPropertyName;
}
});
给对象添加setter
Object.defineProperty(o1, "renew", {
set: function (newValue) {
this.newPropertyName = newValue;
}
});
返回属性配置(对象)
Object.getOwnPropertyDescriptor(o1, "newPropertyName");
返回所有属性名(数组)
Object.getOwnPropertyNames(o1);
返回对象原型(对象)
Object.getPrototypeOf(o1);
阻止对象扩展
Object.preventExtensions(o1);
冻结对象
Object.freeze(o1);
密封对象
Object.seal(o1);
检测是否可扩展(布尔值)
Object.isExtensible(o1);
检测是否冻结(布尔值)
Object.isFrozen(o1);
检测是否密封(布尔值)
Object.isSealed(o1);
对象原型对象(对象实例)的属性和方法
构造函数
o1.constructor;
检测非继承属性是否存在(布尔值)
o1.hasOwnProperty("newPropertyName");
检测是否为实例原型(布尔值)
o1.isPrototypeOf(o1);
检测属性是否可遍历
o1.propertyIsEnumerable("newPropertyName");
返回对象字符串表示
o1.toString();
返回对象原始值
o1.valueOf();
常用Array属性和方法
创建数组
var arr = [1,2,3,4,5];
构造函数长度
Array.length;
数组对象附加属性
Array.prototype;
检测是否为Array
Array.isArray();
数组实例的属性和方法
构造函数
arr.constructor;
返回长度
arr.length;
Mutator方法
以下方法改变原数组
增加或删除一个数组元素
arr.pop();
arr.push("end");
arr.shift();
arr.unshift("start");
添加或删除任意一个元素
arr.splice(1, 3); //从第二个开始,删除三个元素
arr.splice(1, 0, "newing","anotherNewing"); //从第二个开始,删除零个,添加两个新元素
颠倒数组元素
arr.reverse();
排列数组元素
arr.sort();
Accessor方法
以下方法不改变原数组
组合成新数组(Array)
var newArr = arr.concat("newArrayItem");
抽取元素组成新数组(Array)
var newArr = arr.slice(1, 3); //抽取从第二个元素开始到第四个元素(不包括第四个)结束成新数组
连接数组并以某种符号分割组合成字符串(String)
var string = arr.join("-");
连接数组并组合成字符串(String)
var string = arr.toString();
查询匹配元素返回索引值(number)
var index = arr.indexOf("end");
从后往前查询匹配元素返回索引值(number)
var index = arr.indexOf("end");
Accessor方法
以下方法不改变原数组
每个元素执行一次回调函数
arr.forEach(function (currentValue, index, array) {
//body...
});
所有元素是否都通过函数测试(Boolean)
var result = arr.every(function (currentValue, index, array) {
return typeof currentValue === "string";
});
是否至少一个元素通过函数测试(Boolean)
var result = arr.some(function (currentValue, index, array) {
return currentValue.length === 3;
});
返回包括函数测试为true的元素新数组(array)
var newArray = arr.filter(function (currentValue, index, array) {
return currentValue.length === 3;
});
返回回调函数返回值组成的新数组(array)
var newArray = arr.map(function (currentValue, index, array) {
return currentValue + "[string...]";
});
reduce
var result = arr.reduce(function (previousValue, currentValue, index, array) {
return previousValue + " " + currentValue;
}, "beginDoingThis"); //第二参数为初始值
reduceRight
var result = arr.reduceRight(function (previousValue, currentValue, index, array) {
return previousValue + " " + currentValue;
}, "beginDoingThis"); //第二参数为初始值
常用Function的属性和方法
获取参数(like array)
function add(x, y) {
return arguments;
}
获取函数期望接受参数个数(number)
add.length;
获取函数名(string)
add.name;
call方法
add.call(null, 1, 2, 3);
apply方法
add.apply(null, [1, 2, 3]);
bind方法
var anotherAdd = add.bind(null, 1, 2);
返回函数源码
add.toString();
常用String属性和方法
创建字符串
var s1 = "string...";
var s2 = String("hello there good morning...");
添加附加属性和方法
String.prototype
Unicode转为string(string)
var str = String.fromCharCode(65, 66, 67);
索引上string转为Unicode见实例中的方法(number)
var uniq = String.prototype.charCodeAt.call(s1, 0);
String实例的属性和方法
构造函数
s1.constructor;
字符串长度(number)
s1.length;
删除两端的空白字符
s1.trim();
string和unicode转化和索引
索引取值(string)
s1.charAt("0");
string索引上值转为unicode(unmber)
s1.charCodeAt(0);
查找字符在字符串中的索引(number)
s1.indexOf("searchString", 0); //第二个参数为开始的位置
从后往前查找字符在字符串中的索引(number)
s1.lastIndexOf("searchString", 0); //第二个参数为开始的位置
创建子字符串或数组的方法
提取字符串返回新字符串(string)
var str = s1.substring(-3,s1.length); //接收正整数(负数转化为0)
提取字符串返回新字符串(string)
var str = s1.substr(3,2); //可接收负数(从右往左),第二个参数是期望字符串长度
提取字符串返回新字符串(string)
var str = s1.slice(-3, 10); //可接收负数(length-数值)
切割字符串返回数组(array)
var arr = s2.split(" ", 2); //以空格为分隔符最多切割两次
正则相关的方法
正则提取匹配项返回数组(array or null)
var arr = s1.match(/str/g);
正则替换匹配项返回新字符串(string)
var newstr = s1.replace(/\.{3}/, "!!!");
正则返回首次匹配项的索引(number)
var index = s1.search(/str/g);
常用RegExp属性和方法
创建RegExp
var r1 = new RegExp(/hello/ig);
var r2 = /\w{10}/;
为正则添加对象
RegExp.prototype
length(number===2)
RegExp.length
RegExp实例的属性和方法
构造函数
r1.constructor;
是否开启global、ignoreCase和multiline(boolean)
r1.global
r1.ignoreCase
r1.multiline
匹配的最后位置(number)
r1.lastIndex;
设置最后匹配位置(与exec配合)
r1.lastIndex = 0;
执行匹配操作(array)
r1.exec("hello there, hello world");
测试是否匹配(boolean)
r1.test("hello there");