javascript - JS中原型Prototype存在目的是什么?
阿神
阿神 2017-04-11 11:03:16
0
7
422

最近在学习JS的时候,发现prototype的意义不好理解,而且原型中也包含了众多的方法,从chrome后台调出来看到的原型方法简直多的惊人。
由于还没有那么深刻的理解,所以希望大神讲解下原型存在的目的是什么?在什么环境下会用到prototype以及原型链?

阿神
阿神

闭关修行中......

全員に返信 (7)
Ty80

贴一个阮大神的博客链接,个人感觉算是讲得比较清楚的一篇文章。如果你有其他语言OO编程的基础,你也可以用babel把es6语法下的class,extends转成es5,看看对应的实现,也是有助于理解的。
阮一峰:Javascript继承机制的设计思想

いいねを押す+0
    迷茫

    其实我觉得原型就是把几个东西共用的方法或者属性给提炼出来,作为原型。写入原型就不用在实例化的时候在重复使用。

    比如,对于Person来说,每个Person都有自己的名字,且每个人都希望浏览器能够输出自己的名字的sayName方法。如果将sayName方法写在Person里的话,每次实例化Person的时候都会包含这个方法,多个Person就有多次这个方法。如果写在Prototype里的话,每次实例化的时候不会包含这个方法,但是你使用的时候又可以从prototype中找到这个方法。

    function Person(name) { this.name = name; this.sayName = function(){ alert(this.name); } }
    function Person(name) { this.name = name; } Person.prototype.sayName = function(){ alert(this.name) }

    你可以对比一下这两种写法,希望对你有帮助。

    いいねを押す+0
      小葫芦

      据说是为了简单……

      いいねを押す+0
        黄舟

        是为了节约内存,20年前的内存还是很贵重的,比尔·盖茨曾预言“无论对于谁,640KB RAM都足够了”

        いいねを押す+0
          迷茫

          目的就是公私分明啊,共有方法、或者公有变量写在原型上,然后各个实例共享,这样你就写一次一坨代码就行了;当然在继承的时候,如果超过三层发生,性能还不如直接new一个新父类。。

          いいねを押す+0
            洪涛

            因為沒有類的結構,用prototype實現有類語言的繼承特性(創建構造器,指向對象)
            關於這點可以參考 《javascript the good part》函數一章

            いいねを押す+0
              洪涛

              建议 阅读下 《JavaScript高级程序设计》 第6章。

              いいねを押す+0
                最新のダウンロード
                詳細>
                ウェブエフェクト
                公式サイト
                サイト素材
                フロントエンドテンプレート
                私たちについて 免責事項 Sitemap
                PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!