gpt4 book ai didi

javascript - 此示例中存在什么类型的继承(原型(prototype)除外)

转载 作者:行者123 更新时间:2023-12-03 02:18:19 25 4
gpt4 key购买 nike

我用 javaScript 制作了以下示例。有一个构造函数,我从中创建一个实例。现在,该实例直接从构造函数 (printName) 获取 1 个方法,并通过构造函数 (printAge) 的原型(prototype)获取一个方法。

我可以得出结论,printAge可以通过原型(prototype)继承来调用,但是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。它是否代表某种继承?

最佳答案

不,printName 与继承无关。当您通过 person 函数构造函数创建对象时,每个对象都会获得自己的 printName 属性副本,它是一个函数。当我更改某个对象的该属性时,对于其他对象,它不会更改。

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();

所以它只是一个引用函数的属性。您也有名为 age 的类似属性,但 age 包含一个原始值。

关于javascript - 此示例中存在什么类型的继承(原型(prototype)除外),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49270892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com