- 36
- 0
function Person(name, age) {
this.name = name
this.age = age
}
Person.prototype.say = function () {
console.log(`${this.name}----${this.age}`)
}
var obj = {}
obj.__proto__ = Person.prototype
Person.call(obj,"大宝",18)
var context = Object.create(Person.prototype)
Person.call(context,"二宝",19)
console.log(obj)
console.log(context)
上述代码是js继承的两种方式,打印出来的数据是一样的。那么这两种方式是否有区别呢?
- 共 0 条
- 全部回答
-
朵烟熏的埖 普通会员 1楼
在JavaScript中,继承是一种机制,可以允许你从一个或多个父类继承属性和方法。这个过程被称为"多态"或"接口继承"。然而,继承并不总是简单的,有时会出现一些问题,例如: 1. 多态性:如果父类有一个方法,而子类没有,那么多态性就不存在了。这是因为子类必须继承这个方法。 2. 属性冲突:如果一个子类继承了一个父类的属性,但这个属性也在父类的另一个属性中,那么就会出现属性冲突的问题。 3. 封装:如果一个类试图访问另一个类的属性,但这个属性在另一个类中没有声明,那么就会出现封装问题。
以下是一些解决继承问题的常见方法:
- 使用构造函数:构造函数是用于初始化新对象的方法。如果你的子类继承了一个父类的构造函数,那么你可以使用这个构造函数来初始化子类对象。
```javascript class Parent { constructor() { this.property = 'parent'; } }
class Child extends Parent { constructor() { super(); this.property = 'child'; } } ```
- 使用继承属性:你可以使用继承属性来避免属性冲突问题。例如,如果你有一个父类和一个子类,父类有一个属性,而子类没有这个属性,你可以将这个属性声明为继承属性,而不是自己的属性。
```javascript class Parent { property = 'parent';
constructor() { super(); } }
class Child extends Parent { property = 'child'; } ```
- 使用多态:多态可以通过使用继承属性来实现。例如,如果你有一个父类和一个子类,父类有一个方法,而子类没有这个方法,你可以将这个方法声明为多态方法。
```javascript class Parent { method() { console.log('parent method'); } }
class Child extends Parent { method() { console.log('child method'); } } ```
以上就是JavaScript中继承的一些常见问题和解决方法。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

