在下面的消息对象中,如果我这样调用:
var message_object = new Message( response_element );
message_object.display( 'empty' );
是否为每次调用 new Message() 创建了消息数组...如果是这样,我如何确保只有一个消息数组,因为这就是我所需要的?
var Message = function( element )
{
var messages =
{
name: 'Please enter a valid name',
email: 'Please enter a valid email',
pass: 'Please enter passoword, 6-40 characters',
url: 'Please enter a valid url',
title: 'Please enter a valid title',
tweet: 'Please enter a valid tweet',
empty: 'Please complete all fields',
email_s: 'Please enter a valid email.',
same: 'Please make emails equal',
taken: 'Sorry, that email is taken',
validate: 'Please contact <a class="d" href="mailto:chris@domain.com">support</a> to reset your password',
}
this.display = function( type )
{
element.innerHTML = messages[ type ];
new Effects().fade( element, 'down', 4000 );
}
};
最佳答案
是的,每次都会执行整个函数,并且每次都会重新定义消息对象和函数。
你可能想要做的是将它包装在一个闭包中,并利用 Javascript 的原型(prototype)继承
var Message = (function () {
var messages = {
name: 'Please enter a valid name',
email: 'Please enter a valid email',
pass: 'Please enter passoword, 6-40 characters',
url: 'Please enter a valid url',
title: 'Please enter a valid title',
tweet: 'Please enter a valid tweet',
empty: 'Please complete all fields',
email_s: 'Please enter a valid email.',
same: 'Please make emails equal',
taken: 'Sorry, that email is taken',
validate: 'Please contact <a class="d" href="mailto:chris@host.com">support</a> to reset your password',
};
var Message = function (element) {
this.element = element;
};
Message.prototype.display = function( type ) {
this.element.innerHTML = messages[ type ];
new Effects().fade( this.element, 'down', 4000 );
};
return Message;
}());
这使 messages
对象对“类”保持私有(private)。
关于javascript - 实例化函数对象时创建了多少次局部变量? ( 先进的 ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097299/