zoukankan      html  css  js  c++  java
  • JavaScript 继承机制小记

    读《JavaScript: the good parts》, 关于对象继承这块小记一笔:

    function Base(v){
        this.baseValue = v;
        this.getBaseValue = function(){
            return this.baseValue;
        };
    }
    
    function TestObject(base, c){
        var temp = function(){
            this.content = c;
            this.fromBaseValue = function(){
                return this.baseValue;
            };
        };
    
        temp.prototype = base;
    
        return new temp();
    }
    
    var b1 = new Base(1);
    
    var t1 = new TestObject(b1, 'this is t1');
    var t2 = new TestObject(b1, 'this is t2');
    
    console.log('t1', {'baseValue':t1.baseValue, 'fromBaseValue()': t1.fromBaseValue(), 'getBaseValue()':t1.getBaseValue()})
    console.log('t2', {'baseValue':t2.baseValue, 'fromBaseValue()': t2.fromBaseValue(), 'getBaseValue()':t2.getBaseValue()})
    //t1 { baseValue: 1, 'fromBaseValue()': 1, 'getBaseValue()': 1 }
    //t2 { baseValue: 1, 'fromBaseValue()': 1, 'getBaseValue()': 1 }
    
    b1.baseValue = 2
    
    console.log('t1', {'baseValue':t1.baseValue, 'fromBaseValue()': t1.fromBaseValue(), 'getBaseValue()':t1.getBaseValue()})
    console.log('t2', {'baseValue':t2.baseValue, 'fromBaseValue()': t2.fromBaseValue(), 'getBaseValue()':t2.getBaseValue()})
    //t1 { baseValue: 2, 'fromBaseValue()': 2, 'getBaseValue()': 2 }
    //t2 { baseValue: 2, 'fromBaseValue()': 2, 'getBaseValue()': 2 }
    
    t1.baseValue = 3;
    //If we try to retrieve a property value from a object, and if the object lacks the property name,
    //then JavaScript attemps to retrieve the property value from the prototype object.
    console.log('t1', {'baseValue':t1.baseValue, 'fromBaseValue()': t1.fromBaseValue(), 'getBaseValue()':t1.getBaseValue()})
    console.log('t2', {'baseValue':t2.baseValue, 'fromBaseValue()': t2.fromBaseValue(), 'getBaseValue()':t2.getBaseValue()})
    //t1 { baseValue: 3, 'fromBaseValue()': 3, 'getBaseValue()': 3 }
    //t2 { baseValue: 2, 'fromBaseValue()': 2, 'getBaseValue()': 2 }
    
    b1.baseValue = 4
    
    console.log('t1', {'baseValue':t1.baseValue, 'fromBaseValue()': t1.fromBaseValue(), 'getBaseValue()':t1.getBaseValue()})
    console.log('t2', {'baseValue':t2.baseValue, 'fromBaseValue()': t2.fromBaseValue(), 'getBaseValue()':t2.getBaseValue()})
    //t1 { baseValue: 3, 'fromBaseValue()': 3, 'getBaseValue()': 3 }
    //t2 { baseValue: 4, 'fromBaseValue()': 4, 'getBaseValue()': 4 }
  • 相关阅读:
    【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装
    使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点
    使用delphi 开发多层应用(二十三)KbmMW 的WIB
    实现KbmMw web server 支持https
    KbmMW 服务器架构简介
    Devexpress VCL Build v2014 vol 14.1.1 beta发布
    使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器
    KbmMW 4.50.00 测试版发布
    Basic4android v3.80 beta 发布
    KbmMW 认证管理器说明(转载)
  • 原文地址:https://www.cnblogs.com/straybird/p/3158723.html
Copyright © 2011-2022 走看看