loading...

0

16.动态原型模式

javascript读完大概需要3分钟

  • 发布时间:2017-07-26 20:32 星期三
  • 刘伟波
  • 205
  • 更新于2017-07-26 20:32 星期三

动态原型模式

    <script>
    //    function Student() {}
    //    Student.prototype={
    //        name:"李四",
    //        age:23,
    //        family:["爸爸","妈妈","姐姐"],
    //        fun: function () {
    //            return this.age+","+this.family;
    //        }
    //    };
    //    var stu1=new Student();
    //    stu1.name="张三";
    //    stu1.family.push("大舅");
    //    console.log(stu1.name);
    //    console.log(stu1.family);//["爸爸", "妈妈", "姐姐", "大舅"]
    //    var stu2=new Student();
    //    console.log(stu2.name);//["爸爸", "妈妈", "姐姐", "大舅"]
    //    console.log(stu2.family);

        //构造函数+原型 模式

        function Student(name,age) {//每个对象特有的使用构造函数
            this.name=name;
            this.age=age;
            this.family=["爸爸", "妈妈"]
        }
        Student.prototype={//所有对象共享的放在原型对象中
            fun: function(){
                return this.name+ this.age+this.family;
            }
        };
    //
    //    var stu1=new Student("lisi","20");
    //    stu1.family.push("姐姐");
    //    console.log(stu1.family);
    //    var stu2=new Student("zhangsan","20");
    //    console.log(stu2.family);//["爸爸", "妈妈"]


        //动态原型模式 把构造函数和原型写在一起
        function Student(name,age) {//每个对象特有的使用构造函数
            this.name=name;
            this.age=age;
            this.family=["爸爸", "妈妈"];

            if(typeof this.fun!="function"){
                console.log("原型初始化开始");
                Student.prototype.fun= function(){
                    return this.name+ this.age+this.family;
                };
                console.log("原型初始化结束");
            }
        }
        var stu1=new Student("lisi","20");
        console.log(stu1.fun());//lisi20爸爸,妈妈
        var stu2=new Student("lisi","34");
        console.log(stu2.fun());//lisi20爸爸,妈妈
        //原型初始化开始
        //原型初始化结束
        //lisi20爸爸,妈妈
        //原型初始化开始
        //原型初始化结束
        //lisi34爸爸,妈妈

        //想让只初始化一次使用if判断
    </script>


你可能感兴趣的文章

    发表评论

    评论支持markdown,评论内容不能超过500字符,如果内容过多或者要及时回复,建议去 segmentfault平台, 也可以来我的直播间来提问。
    关于技术问题或者有啥不懂的都可以留言, 我会定期回复答疑, 也可以来 我的直播间 提问, 推荐最新仓库 前端知识体系, 感謝支持!