如何在没有页面刷新的情况下多次执行构造函数

Chi*_*uzo 0 javascript constructor

我是使用OOP方法论的新手javascript,我使用下面的代码作为constructor.

var post = function post() {}
Run Code Online (Sandbox Code Playgroud)

我在jQuery事件处理程序中调用构造函数

post = new post();
Run Code Online (Sandbox Code Playgroud)

在第一次运行或每次页面刷新时,它运行良好,因为method invocation在调用constructorgets执行后.但是在单击第二次触发事件的按钮时,它将不再执行,而是在以下内容中收到以下错误消息firebug

TypeError: post is not a constructor
Run Code Online (Sandbox Code Playgroud)

那么为什么在没有页面刷新的情况下第一次运行后它再次无效?

如何在没有页面刷新的情况下让它连续工作?

T.J*_*der 5

那么为什么它在第一次运行后不再起作用

因为你已经覆盖了这个post符号.这一行:

post = new post();
Run Code Online (Sandbox Code Playgroud)

调用post构造函数并将结果对象赋给post变量.现在post不再是构造函数了,它是通过创建的对象new post.

只需使用其他名称:

var p = new post();
Run Code Online (Sandbox Code Playgroud)

旁注:JavaScript中压倒性的约定是构造函数以一个大写字母开头,例如Post而不是post.您可以自由地忽略该约定,但可能会让其他人难以阅读您的代码(例如,此处为SO).