Javascript 带有原型函数的新对象与返回对象的常规函数
基本思想是检查它是否以下划线开头,以及是否拆分字符串并返回下划线后面的内容。此函数将运行多次,但对于不同的字符串,我不太可能需要为每个stirng多次检索信息 一个简单的函数,它将返回一个包含我需要的数据的对象:Javascript 带有原型函数的新对象与返回对象的常规函数,javascript,node.js,Javascript,Node.js,基本思想是检查它是否以下划线开头,以及是否拆分字符串并返回下划线后面的内容。此函数将运行多次,但对于不同的字符串,我不太可能需要为每个stirng多次检索信息 一个简单的函数,它将返回一个包含我需要的数据的对象: var parseElementName = function(i) { var sliced = [i.slice(0, 1), i.slice(1, i.length)]; var obj = { isClass: null,
var parseElementName = function(i) {
var sliced = [i.slice(0, 1), i.slice(1, i.length)];
var obj = {
isClass: null,
name: ''
}
if(sliced[0] === '_') {
obj.name = sliced[1];
obj.isClass = true;
} else {
obj.name = i;
obj.isClass = false;
}
return obj
}
使用parseElementName(i)调用代码>
具有原型函数的对象
var parsedElement = function(i) {
this.className =
this.isClass = null;
if(this.setElementName(i))
return true
}
parsedElement.prototype.setElementName = function(i) {
var sliced = [i.slice(0, 1), i.slice(1, i.length)];
if(sliced[0] === '_') {
this.className = sliced[1];
this.isClass = true
} else {
this.className = i;
this.isClass = false
}
}
使用var parsed_element=new parsedElement()调用代码>
然后parsed_元素.className
或parsedElement.isClass
推荐哪种方法?我最喜欢对象原型方法,但我对您的代码有几点注意:
在每行末尾使用分号
类名应该大写。所以它应该是ParsedElement
我不会称它为className
,因为当它不是类时会让人困惑,我会将它重命名为name
这两种方法有不同的结果——构造函数+原型方法将产生一个实例,该实例具有setElementName
方法。更改现有对象的字段时是否需要此选项?这是一个简单的解析器函数,因此我假设不是。在这种情况下,您应该返回对象文本:
function parseElementName(i) {
var isClass = i.charAt(0) == '_';
return {
isClass: isClass,
name = isClass ? i.slice(1) : i
};
}
如果您真的需要以后的方法,请考虑@ Max MeIle和@ HMR点。
为什么在构造函数中有一个IF语句,它将永远不会返回真?你也可以做this.setElementName(i)
而不是if(this.setElementName(i))
,因为setElementName不返回任何东西,所以if语句永远不会为真。是的,很抱歉在修改代码的中途发布了此消息,之前它返回了一些东西。