function Person1(name) {
this.name = name;
}
function Person2(name) {
this.name = name;
return this.name;
}
function Person3(name) {
this.name = name;
return new Array();
}
function Person4(name) {
this.name = name;
return new String(name);
}
function Person5(name) {
this.name = name;
return function() {};
}
var person1 = new Person1('xl'); // {name: 'xl'}
var person2 = new Person2('xl'); // {name: 'xl'}
var person3 = new Person3('xl'); // []
var person4 = new Person4('xl'); // 'xl'
var person5 = new Person5('xl'); // function() {}
地球上的javascript中的新运算符发生了什么?特别是person1和person2之间的区别。
答案 0 :(得分:0)
new运算符创建了Person函数/类的一个新实例,你必须意识到当使用new new时该函数被视为类似于任何其他语言(c#,java,Python)的类,所以它创建了一个Person类的新上下文,每个上下文都不识别Person对象的其他上下文,它独立存在,
在你的例子中,你创建了5个不同的人函数,这些函数彼此相同,而你只需创建1个Person函数,并从他创建5个不同的实例
var person1 = new Person('xl');
var person2 = new Person('xl');
var person3 = new Person('xl');
var person4 = new Person('xl');
var person5 = new Person('xl')
// person1 != person2
// person1.name == person2.name
这里的每个人都是同一个班级的不同实例 - 人。
当使用new运算符时,你可以使用函数内部的reuturb语句,它并不意味着abything,new运算符的返回值将是新对象的实例 - 因此 - 函数内的'this'关键字,这是实例的上下文。
您可以在此链接中深入了解JavaScript类和对象继承 - https://developer.mozilla.org/en/docs/Web/JavaScript/Inheritance_and_the_prototype_chain