资讯专栏INFORMATION COLUMN

JS标准库的部分内置对象的常用属性和方法

source / 1870人阅读

摘要:常用的属性和方法创建空创建给对象添加属性给对象添加多个属性给对象添加给对象添加返回属性配置对象返回所有属性名数组返回对象原型对象阻止对象扩展冻结对象密封对象检测是否可扩展布尔值检测是否冻结布尔值检测是否密封布尔值对象原型对象对象实例的属性和

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87742.html

相关文章

  • TypeScript 初识 - 内置对象

    摘要:自带的内置对象都可以直接在中当作定义好的类型。的内置对象标准提供了常用的内置对象等。在不需要额外引入就可以直接使用这些内置对象用写不是内置对象的一部分,想要写时提示,需要引入第三方声明文件 JavaScript 自带的内置对象都可以直接在 TypeScript 中当作定义好的类型。 TypeScript 核心库的定义文件 TypeScript 核心库的定义文件定义了所有浏览器环境需要用...

    lordharrd 评论0 收藏0
  • JavaScript MVC 学习笔记(五)事件操作拓展

    摘要:事件类型布尔值,表示事件是否通过以冒泡形式触发。表示键盘事件的属性布尔值,表示当前按下的键是否表示一个字符。表示当前按键的值仅对事件有效。,事件发生时相对于屏幕的坐标。 事件对象 event 对象还包含很多有用的属性。W3C 范中包含的大部分属性都列在下面,更多信息参照完整的标准规范。 事件类型: bubbles :布尔值,表示事件是否通过DOM 以冒泡形式触发。 事件发生时...

    Anshiii 评论0 收藏0
  • JavaWEB开发11——JSP

    摘要:出现的目的同一样也是要提到页面中的脚本代码。标准标准标签库有个子库,但随着发展,目前常使用的是他的核心库标签库标签库的前缀下载与导入下载从的网站下载的包。 一、JSP技术1.jsp脚本和注释jsp脚本:1) ----- 内部的java代码翻译到service方法的内部2) ----- 会被翻译成service方法内部out.print()3) ---- 会被翻译成servlet的成员的...

    beita 评论0 收藏0
  • lua web快速开发指南(4) - 详细了解httpd作用

    摘要:库是基于协议实现而来内置了高性能的协议解析器与解析库库默认情况下就能工作的很好但是在一些需求较为极端的场景还是需要微调一下参数常用的内置方法介绍设置每个连接到最大空闲连接等待时间超过这个数值将主动断开连接默认值为秒设置的最大长度超过这个值将 httpd库是基于HTTP 1.1协议实现而来, 内置了高性能的http协议解析器与urldecode解析库. httpd库默认情况下就能工作的很...

    ChristmasBoy 评论0 收藏0
  • [译] 深入理解 Promise 五部曲:4. 扩展问题

    摘要:有一个和相关的更大的问题。最后,请负有责任感并且使用安全的扩展。深入理解五部曲异步问题深入理解五部曲转换问题深入理解五部曲可靠性问题深入理解五部曲扩展性问题深入理解五部曲乐高问题最后,安利下我的个人博客,欢迎访问 原文地址:http://blog.getify.com/promis... 现在,我希望你已经看过深入理解Promise的前三篇文章了。并且假设你已经完全理解Promises...

    Shimmer 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<