我在javaScript中做了以下示例。有一个构造函数,我从中创建一个实例。现在,这个实例直接从构造函数(printName)获取1个方法,并通过构造函数原型(printAge)获取一个方法。
我可以得出结论, printAge 可以通过原型继承来调用,但 printName 代表任何类型的继承(因为它自动获取新创建的实例,是经典继承还是其他任何东西?)。
<html>
<head></head>
<body>
<script>
var person = function(name, age){
this.name = name;
this.age = age;
this.printName = function(){
alert(this.name);
}
}
person.prototype.printAge = function(){
alert(this.age);
}
var person1 = new person("Jack", 29);
person1.printName();
person1.printAge();
</script>
</body>
</html>
因为,新实例已创建,它从构造函数获取 printName 。它代表任何类型的继承吗?
答案 0 :(得分:1)
不,printName
与继承无关。当您通过person
函数构造函数创建对象时,每个对象都会获得自己的printName
prpoerty副本,这是一个函数。当我为一个对象更改该属性时,对于其他属性,它将不会被更改。
var person = function(name, age){
this.name = name;
this.age = age;
this.printName = function() {
alert(this.name);
}
};
person.prototype.printAge = function() {
alert(this.age);
};
var person1 = new person("Jack", 29);
var person2 = new person("Alex", 30);
person1.printName = function() { console.log('Changed !!!'); };
person1.printName();
person2.printName();
&#13;
所以它只是一个涉及函数的属性。类似的属性名称为age
,但age
包含原始值。