我正在检查JavaScript中的闭包和原型。我编写了两个基本HTML返回函数,基本上它们都返回相同的输出。这两者之间有什么区别/关系,为什么我们应该使用闭包?
//Closure
function createLI(tags) {
return function(...args) {
if (args.length > 1) {
return args.map((iteam) => {
return "<" + tags + ">" + iteam + "</" + tags + ">"
})
} else {
return "<" + tags + ">" + args + "</" + tags + ">"
}
}
}
var tag = createLI('li');
console.log(tag('test'));
//prototype function
let Newfunction = function(x) {
this.content = x;
}
Newfunction.prototype.aswrapper = function(...args) {
if (args.length > 1) {
return args.map((iteam) => {
return "<" + this.content + ">" + iteam + "</" + this.content + ">"
})
} else {
return "<" + this.content + ">" + args + "</" + this.content + ">"
}
}
let heading = new Newfunction('h1');
heading.aswrapper('sometextprint');
console.log(heading.aswrapper('sometextprint'));
答案 0 :(得分:2)
每次使用闭包创建对象时,都会有其方法的副本(即使它们执行相同的操作,它们也会作为Function
类型的独立对象存在于内存中)。如果使用原型方法,则无论您创建多少个对象,每种方法(原型之一)都将只有一个副本。