【JavaScript】24_修改原型

举报
魔天伦 发表于 2023/02/25 11:09:26 2023/02/25
【摘要】 12、修改原型大部分情况下,我们是不需要修改原型对象注意:千万不要通过类的实例去修改原型1. 通过一个对象影响所有同类对象,这么做不合适2. 修改原型先得创建实例,麻烦3. 危险处理通过__proto__能访问对象的原型外,还可以通过类的prototype属性,来访问实例的原型修改原型时,最好通过通过类去修改好处:一修改就是修改所有实例的原型无需创建实例即可完成对类的修改原则:原型尽量不要...

12、修改原型

大部分情况下,我们是不需要修改原型对象
注意:
千万不要通过类的实例去修改原型

1. 通过一个对象影响所有同类对象,这么做不合适
2. 修改原型先得创建实例,麻烦
3. 危险

处理通过__proto__能访问对象的原型外,
还可以通过类的prototype属性,来访问实例的原型
修改原型时,最好通过通过类去修改
好处:

  1. 一修改就是修改所有实例的原型
  2. 无需创建实例即可完成对类的修改

原则:

  1. 原型尽量不要手动改
  2. 要改也不要通过实例对象去改
  3. 通过 类.prototype 属性去修改
  4. 最好不要直接给prototype去赋值
    <script>
        class Person {
            name = '孙悟空'
            age = 18

            sayHello(){
                console.log('Hello,我是')
            }
        }

        Person.prototype.fly = () => {
            console.log('我在飞!')
        } 

        class Dog {

        }

        const p = new Person ()
        const p2 = new Person ()

        // 通过对象修改原型,向原型中添加方法,修改后所有同类实例都能访问该方法 不要这么做!
        // p.__proto__.run = () => {
        //     console.log('我在跑~')
        // }

        // p.__proto__ = new Dog() // 直接为对象赋值了一个新的原型 不要这么做!


        // console.log(p)
        // console.log(p2)

        // p.run()
        // p2.run()

        // console.log(Person.prototype) // 访问Person实例的原型对象
</script>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。