구조 함수를 빌려 비원형을 계승하다

2997 단어 구조 함수
        function Article() {

            this.tag = ["js", "html"];

        }

        var article = new Article();

        var Blogpost = function () {};

        Blogpost.prototype = article;

        var blog = new Blogpost();

        var Page = function() {

            Article.call(this, arguments);

        };

        var page = new Page();

        blog.tag.push("aa");

        page.tag.push("bb");

        console.log(article);

Object {tag: Array[3]}
tag: Array[3]
  • 0: "js"
  • 1: "html"
  • 2: "aa"
  • length: 3

  • __proto__: Array[0]
    __proto__: Article
    constructor: function Article() {
    __proto__: Object
    블로그와article는 같은 태그 인용입니다.같은 실례입니다,article.
    Blogpost를prototype =  new Article();다시 new. 그럼 실례는 공유하지 않겠습니다.
    new의 적합성, 구조 함수의 새로운 실례,prototype는 공유됩니다.아래와 같다
            function Tree (x) {
    
                this.value = x;
    
            }
    
            Tree.prototype = {
    
                constructor: Tree,
    
                children: [],
    
                addChild: function(x) {
    
                    this.children.push(x);
    
                }
    
            }
    
            var tree1 = new Tree(1);
    
            tree1.addChild(1);
    
            var tree2 = new Tree(2);
    
            tree2.addChild(2);
    
            console.log (tree1.children);//[1,2]

     

    좋은 웹페이지 즐겨찾기