zoukankan      html  css  js  c++  java
  • 代码复用 -- 深入了解javascript

    /*
        代码复用
    */
    /*
        一、避免
    */
    /*
        模式1:默认模式
    */
        function Parent() {
            this.name = "123";
        }
        Parent.prototype.say = function () {
            return this.name;
        }
        function Child(name) { }
        Child.prototype = new parent();
    
        var kid = new Child();
        kid.name = "abc";
        kid.say(); //abc
        // 缺点:不能让参数传进给Child构造函数
        var s = new Child('Seth');
        console.log(s.say()); // "123"
    
    /*
        二、推荐
    */
    //  1. 模式1:原型继承
        function object(o) {
            function F() {
            }
            F.prototype = o;
            return new F();
        }
        // 要继承的父对象
        var parent = {
            name: "Papa",
        };
        // 新对象
        var child = object(parent);
    
        // 父构造函数
        function Person() {    
            // an "own" property    
            this.name = "Adam";
        }
        // 给原型添加新属性
        Person.prototype.getName = function () {
            return this.name;
        };
        // 创建新person
        var papa = new Person();
        // 继承
        var kid = object(papa);
        console.log(kid.getName()); // "Adam"
        // 继承原型
        var kid = object(Person.prototype);
        console.log(typeof kid.getName); // "function",因为是在原型里定义的
        console.log(typeof kid.name); // "undefined", 因为只继承了原型
    
        //使用ECMAScript5
        /* 使用新版的ECMAScript 5提供的功能 */
        var child = Object.create(parent);
        var child = Object.create(parent, 
            {
                age: { value: 2 }
                // ECMA5 descriptor
            });
        console.log(child.hasOwnProperty("age")); // true
    
    //  2. 模式2:复制所有属性进行继承
    
    //  3. 模式3:混合(mix-in)
    //  4. 模式4:借用方法
  • 相关阅读:
    Beta版软件说明书
    团队项目第五天
    cnblogs用户体验评价
    团队项目测试计划
    Alpha版总结会议
    软件使用说明书
    团队绩效考核
    各个小组对于“我爱淘”的评价
    软件工程团队项目评价
    丹佛机场行李系统处理方案
  • 原文地址:https://www.cnblogs.com/ruanyifeng/p/4691991.html
Copyright © 2011-2022 走看看