Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的构造函数问题_Javascript - Fatal编程技术网

javascript中的构造函数问题

javascript中的构造函数问题,javascript,Javascript,如果我写两个构造函数,如下所示: Person(name, age) { this.name = name; this.age = age; sayName = function() { alert("hello"); }; } 及 有什么区别?做 赛名 第一段代码中真的有什么意思吗?它有用吗?sayName在第一个代码中是一个私有全局函数,而在第二个代码中是一个特权公共函数 更新#1: 下面的代码大致概括了它们的含义 fun

如果我写两个构造函数,如下所示:

Person(name, age) { 
    this.name = name;  
    this.age = age;  
    sayName = function() {  
        alert("hello");  
    };
}

有什么区别?做

赛名


第一段代码中真的有什么意思吗?它有用吗?

sayName
在第一个代码中是一个私有全局函数,而在第二个代码中是一个特权公共函数


更新#1:

下面的代码大致概括了它们的含义

function Person(name, age) { 
    this.name = name;  
    this.age = age;  
    sayName = function() {  //define in global name-space
    alert("hello");  
    }  

    var sayNamePvt = function() { //private function
        alert("hello pvt");  
    }  

    this.callPvt = function(){ //shows how privilege function can access private vars and functions
        sayNamePvt();
    }
}


function Person1(name, age) { 
    this.name = name;  
    this.age = age;  
    this.sayName = function() { //privilege public function  
        alert("hello1");  
    }  
}


var one = new Person('abc', 12);
var two = new Person1('abcd', 11);
two.sayName();//privileged public access
sayName(); //global access
//one.sayName(); //ERROR: one.sayName is not a function
//one.sayNamePvt(); //ERROR: one.sayNamePvt is not a function
one.callPvt(); //privileged method can call private functions

实际上,因为没有
var
关键字,所以它是一个全局变量function@qwertymk呜呜声。错过了要点。@jsnewman更新了答案,为之前的错误答案道歉。当你询问有关书籍的问题时,请包括有关该作品的信息。它可以帮助人们帮助您,以及正确地对代码进行归因。在本例中,示例来自Nicholas C.Zakas的《面向Web开发人员的专业JavaScript》,第二版(Wrox,2009),第152页。
function Person(name, age) { 
    this.name = name;  
    this.age = age;  
    sayName = function() {  //define in global name-space
    alert("hello");  
    }  

    var sayNamePvt = function() { //private function
        alert("hello pvt");  
    }  

    this.callPvt = function(){ //shows how privilege function can access private vars and functions
        sayNamePvt();
    }
}


function Person1(name, age) { 
    this.name = name;  
    this.age = age;  
    this.sayName = function() { //privilege public function  
        alert("hello1");  
    }  
}


var one = new Person('abc', 12);
var two = new Person1('abcd', 11);
two.sayName();//privileged public access
sayName(); //global access
//one.sayName(); //ERROR: one.sayName is not a function
//one.sayNamePvt(); //ERROR: one.sayNamePvt is not a function
one.callPvt(); //privileged method can call private functions