账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    javascript 继承问题
    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
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 朵烟熏的埖 普通会员 1楼

      在JavaScript中,继承是一种机制,可以允许你从一个或多个父类继承属性和方法。这个过程被称为"多态"或"接口继承"。然而,继承并不总是简单的,有时会出现一些问题,例如: 1. 多态性:如果父类有一个方法,而子类没有,那么多态性就不存在了。这是因为子类必须继承这个方法。 2. 属性冲突:如果一个子类继承了一个父类的属性,但这个属性也在父类的另一个属性中,那么就会出现属性冲突的问题。 3. 封装:如果一个类试图访问另一个类的属性,但这个属性在另一个类中没有声明,那么就会出现封装问题。

      以下是一些解决继承问题的常见方法:

      1. 使用构造函数:构造函数是用于初始化新对象的方法。如果你的子类继承了一个父类的构造函数,那么你可以使用这个构造函数来初始化子类对象。

      ```javascript class Parent { constructor() { this.property = 'parent'; } }

      class Child extends Parent { constructor() { super(); this.property = 'child'; } } ```

      1. 使用继承属性:你可以使用继承属性来避免属性冲突问题。例如,如果你有一个父类和一个子类,父类有一个属性,而子类没有这个属性,你可以将这个属性声明为继承属性,而不是自己的属性。

      ```javascript class Parent { property = 'parent';

      constructor() { super(); } }

      class Child extends Parent { property = 'child'; } ```

      1. 使用多态:多态可以通过使用继承属性来实现。例如,如果你有一个父类和一个子类,父类有一个方法,而子类没有这个方法,你可以将这个方法声明为多态方法。

      ```javascript class Parent { method() { console.log('parent method'); } }

      class Child extends Parent { method() { console.log('child method'); } } ```

      以上就是JavaScript中继承的一些常见问题和解决方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部