函数构造函数:assign构造函数

时间:2015-09-16 10:09:06

标签: javascript constructor

为什么以下代码打印"结果":

function Person(){
    this.name = name; 
}

Person2 = Person; 

var person2 = new Person2("Jane"); 
console.log(person2.name); //result 

http://jsfiddle.net/bcyj3e8u/1/

2 个答案:

答案 0 :(得分:1)

它(一般而言)。在您的特定小提琴中,似乎有一个全局name变量,您可以将其分配给this.name,其恰好具有值"结果"。这不会发生在"清洁"环境。在那里打印undefined

根本原因是构造函数中缺少的参数:

function Person(name) {
    this.name = name; 
}

答案 1 :(得分:0)

您忘记在构造函数中添加参数:

function Person(name){ // <-- here
    this.name = name; 
}

Person2 = Person; 

var person2 = new Person2("Jane"); 
console.log(person2.name);

更新:我省略了它,因为我认为它不相关(并且有点明显),但是“结果”被分配,因为在名为“name”的小提琴页面中有一个全局变量,其值已经分配了“result”。