我用原型创建了一个javascript函数的骨架:
'use strict';
var functionName = (function () {
var functionName = function(param1){
console.log("functionName " + param1);
this.init(param1);
};
// public function
functionName.prototype = {
init : function(param1) {
console.log("init " + param1);
var privateVar = param1;
this.setFunction();
},
setFunction : function() {
console.log("setFunction");
// do stuff here
}
};
return functionName;
}());
// Instances creation
var f1 = new functionName("f1");
var f2 = new functionName("f2");
f1.setFunction();
console.log("private var : " + f1.privateVar);
查看here中的代码 你怎么看? 以下是此脚本的日志:
functionName f1 (index):25
init f1 (index):32
setFunction (index):37
functionName f2 (index):25
init f2 (index):32
setFunction (index):37
setFunction (index):37
private var : undefined (index):51
我不明白为什么我看了三次setFunction
。有人有想法吗?
函数SetFunction
的原型不应该执行一次?
答案 0 :(得分:3)
您在初始this.setFunction();
内调用了init
。无论何时调用构造函数,都会遇到此问题。
因此,它会被两次击中:
var f1 = new functionName("f1");
var f2 = new functionName("f2");
然后你再次分别召唤它,第三次:
f1.setFunction();