# JavaScript 中内置的工具和常用代码片段
# 1. 数组相关
# makeArray
类数组对象转化为真正的 JavaScript 数组
// Native
Array.prototype.slice.call(arrayLike);
// ES6 的新方法
Array.from(arrayLike);
# 2. DOM 相关
# 包含
检测 DOM 元素是不是其他 DOM 元素的后代.
// jQuery
$.contains(el, child);
// Native
el !== child && el.contains(child);
# 解析 parseHTML
解析字符串为 DOM 节点数组.
// jQuery
$.parseHTML(htmlString);
// Native
function parseHTML(string) {
const context = document.implementation.createHTMLDocument();
// Set the base href for the created document so any parsed elements with URLs
// are based on the document's URL
const base = context.createElement('base');
base.href = document.location.href;
context.head.appendChild(base);
context.body.innerHTML = string;
return context.body.children;
}
# 解析 parseJSON
传入格式正确的 JSON 字符串并返回 JavaScript 值.
// jQuery
$.parseJSON(str);
// Native
JSON.parse(str);
# 3. 其它
# extend
合并多个对象的内容到第一个对象。 object.assign 是 ES6 API 。
// Native
Object.assign({}, defaultOpts, opts);
# trim
移除字符串头尾空白。
// Native
string.trim();
# type
检测对象的 JavaScript [Class] 内部类型。
// Native
function type(item) {
const reTypeOf = /(?:^\[object\s(.*?)\]$)/;
return Object.prototype.toString.call(item)
.replace(reTypeOf, '$1')
.toLowerCase();
}
# now
返回当前时间的数字呈现。
// Native
Date.now();
# 4. JS 中构建一个 Form
// JavaScript 构建一个 form
function make_form() {
// 创建一个 form
const form1 = document.createElement("form");
form1.id = "form1";
form1.name = "form1";
form1.style = "display:none;";
// form1.style.display = "none";
form1.method = "POST";
form1.action = "/servlet/info";
// 创建一个输入
const input = document.createElement("input");
input.type = "text";
input.name = "value1";
input.value = "1234567";
// 将该输入框插入到 form 中
form1.appendChild(input);
// 添加 form 到 body,提交,删除 form
document.body.appendChild(form1);
form1.submit();
document.body.removeChild(form1);
}