JavaScript在一行上设置命名函数的原型
所以我试图找到一个真正干净的JavaScript函数原型模式 我可以这样做:JavaScript在一行上设置命名函数的原型,javascript,Javascript,所以我试图找到一个真正干净的JavaScript函数原型模式 我可以这样做: var Person = function () { // person logic }.prototype.foo = function () { // people's foo logic } 但是我想命名我的类构造函数,而不是多余的。下面的代码在单词prototype之前生成意外的 function Person() { // person logic }.prototype.foo = funct
var Person = function () {
// person logic
}.prototype.foo = function () {
// people's foo logic
}
但是我想命名我的类构造函数,而不是多余的。下面的代码在单词prototype
之前生成意外的
function Person() {
// person logic
}.prototype.foo = function () {
// people's foo logic
}
如何在同一行上定义原型,而不冗余地将Person设置为变量
“如何在同一行上定义原型,而不冗余地将Person设置为变量?”
像这样(这里绝对没有冗余):
为了处理=
运算符的较低优先级及其从右到左的关联性,需要将变量声明与第一个赋值分组分开
但在我看来,这并没有什么好处。保持代码简单明了
你的问题和评论都暗示着你认为这里有冗余。没有 您的需求似乎是任意的,但是如果您真的想要这样做,那么将该函数传递给一个将各个部分组合在一起的助手函数
function why(ctor, members) {
for (var m in members)
ctor.prototype[m] = members[m];
return ctor;
}
然后像这样使用它:
var Person = why(function() {
}, {
foo: function() {
}
});
同样,没有真正的好处,只是增加了开销,但它满足了您的要求。可能吗?我所知道的最紧凑的模式是:
var Person = function() {
this.func = function() { console.log('hello'); };
};
var p = new Person();
console.log(p instanceof Person);
console.log(typeof p.func);
p.func();
您可能更喜欢使用
Object.create()
的模式。第一个代码真的有效吗?将Person
设置为变量不会是“多余的”。它将只执行一次,并且无论如何都需要访问它。即使使用函数声明而不是函数表达式,也会有变量Person
(否则,您计划如何创建实例?)我只想指定函数名一次。@JacksonGariety:它只指定一次。你是说你只想“打”一次?哦,对不起。如果不将函数和原型成员传递给助手,您就无法完成所需的操作。我认为问题中提到了原型,您根本没有使用它,Person的每个实例都有自己的func版本。如果创建数百个复杂对象实例,则资源无效。关于构造函数和原型:
var Person = function() {
this.func = function() { console.log('hello'); };
};
var p = new Person();
console.log(p instanceof Person);
console.log(typeof p.func);
p.func();