空javascript函数的框架

空javascript函数的框架,javascript,function,prototype,Javascript,Function,Prototype,我使用prototype创建了javascript函数的框架: 'use strict'; var functionName = (function () { var functionName = function(param1){ console.log("functionName " + param1); this.init(param1); }; // public function functi

我使用prototype创建了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);  
请参阅中的代码 你怎么认为? 以下是此脚本的日志:

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
的原型不应执行一次

您正在调用
this.setFunction()在初始
init
中。无论何时调用构造函数,都会遇到此问题

因此,它会同时受到两次攻击:

var f1 = new functionName("f1");  
var f2 = new functionName("f2");
然后您将分别再次调用它,以获得第三次:

f1.setFunction();  

您正在调用
this.setFunction()在初始
init
中。无论何时调用构造函数,都会遇到此问题

因此,它会同时受到两次攻击:

var f1 = new functionName("f1");  
var f2 = new functionName("f2");
然后您将分别再次调用它,以获得第三次:

f1.setFunction();  

您正在调用
this.setFunction()在初始
init
中。无论何时调用构造函数,都会遇到此问题

因此,它会同时受到两次攻击:

var f1 = new functionName("f1");  
var f2 = new functionName("f2");
然后您将分别再次调用它,以获得第三次:

f1.setFunction();  

您正在调用
this.setFunction()在初始
init
中。无论何时调用构造函数,都会遇到此问题

因此,它会同时受到两次攻击:

var f1 = new functionName("f1");  
var f2 = new functionName("f2");
然后您将分别再次调用它,以获得第三次:

f1.setFunction();