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 }
  • 相关阅读:
    Go语言类型(布尔、整型、数组、切片、map等)
    CSS学习系列2 -- CSS中的清除浮动
    CSS学习系列1
    Umbraco中根据ID获取IPublishedContent
    Umbraco -- 在Visual Studio中新建一个View 如何在Umbraco back office 中显示出来
    Umbraco back office 中templates显示不出来问题解决 (一片空白)
    JavaScript学习系列5 ---ES6中的var, let 和const
    JavaScript学习系列4 ----- JavaScript中的扩展运算符 三个点(...)
    JavaScript学习系列3 -- JavaScript arguments对象学习
    .NET中的泛型委托
  • 原文地址:https://www.cnblogs.com/straybird/p/3158723.html
Copyright © 2011-2022 走看看