1

常用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");

JS菌
6.4k 声望2k 粉丝