检查对象文字的名称 属性
check the name of an object literal property
我有一个 shorthand 元素创建函数,它接受一个标签名称和一个对象文字。
//create element
function $make(tag, parameters) {
var o = document.createElement(t);
if (p.style) o.style.cssText = p.style;
if (p.class) o.className = p.class;
if (p.text) o.textContent = p.text;
return o;
}
你称呼它足够简单:
var e = $make('div', {style: 'float: left', class: 'myClass', text: 'Some Text'});
我不想为每个单独的属性设置检查,而是想在 属性 中使用关键字符前缀设置属性。例如,如果我想为 link 设置 href
,我可能会调用:
var e = $make('a', {style: 'float: left', text: 'Google', ~href: 'https://www.google.com'});
如何遍历对象文字的属性并检查 属性 本身的名称( 不是 值)是否以特定字符开头或细绳?这可能吗?如果没有,您会推荐什么替代方案?
您可以使用 for...in
循环获取 Object
中的每个键,然后检查字符串或字符是否存在。
在下面的示例中,我正在检查键是否以“~”字符开头。
for (const key in myObject) {
if (key.indexOf('~') === 0) {
// key contains '~' character
}
}
您也可以使用正则表达式来匹配字符串,而不是使用 indexOf
我建议在 Object.keys 函数上使用 forEach 循环而不是 for...in。这是因为 for ... in 查找原型链 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in#Iterating_over_own_properties_only).
var obj = {"style": 'float: left', "text": 'Google', "~href": 'https://www.google.com'};
Object.keys(obj).forEach((elm) => {
console.log("Key=>Value : " + elm + "=>" + obj[elm]);
if(elm.contains("~")) {
console.log("Key: " + elm + " contains ~");
}
});
我有一个 shorthand 元素创建函数,它接受一个标签名称和一个对象文字。
//create element
function $make(tag, parameters) {
var o = document.createElement(t);
if (p.style) o.style.cssText = p.style;
if (p.class) o.className = p.class;
if (p.text) o.textContent = p.text;
return o;
}
你称呼它足够简单:
var e = $make('div', {style: 'float: left', class: 'myClass', text: 'Some Text'});
我不想为每个单独的属性设置检查,而是想在 属性 中使用关键字符前缀设置属性。例如,如果我想为 link 设置 href
,我可能会调用:
var e = $make('a', {style: 'float: left', text: 'Google', ~href: 'https://www.google.com'});
如何遍历对象文字的属性并检查 属性 本身的名称( 不是 值)是否以特定字符开头或细绳?这可能吗?如果没有,您会推荐什么替代方案?
您可以使用 for...in
循环获取 Object
中的每个键,然后检查字符串或字符是否存在。
在下面的示例中,我正在检查键是否以“~”字符开头。
for (const key in myObject) {
if (key.indexOf('~') === 0) {
// key contains '~' character
}
}
您也可以使用正则表达式来匹配字符串,而不是使用 indexOf
我建议在 Object.keys 函数上使用 forEach 循环而不是 for...in。这是因为 for ... in 查找原型链 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in#Iterating_over_own_properties_only).
var obj = {"style": 'float: left', "text": 'Google', "~href": 'https://www.google.com'};
Object.keys(obj).forEach((elm) => {
console.log("Key=>Value : " + elm + "=>" + obj[elm]);
if(elm.contains("~")) {
console.log("Key: " + elm + " contains ~");
}
});