• 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 }
  • 相关阅读:
    火狐浏览器kaptcha验证码点击无法刷新问题解决方法
    算法学习笔记——洗碗时遇到的汉诺塔问题
    JSP学习笔记
    springmvc中Tomcat跨服务器上传中文名文件报错解决方案
    MAVEN项目报错解决方法集锦(1)
    原生js模板语法之underscore.js
    HTML针式打印机打印模板
    elementui form表单验证
    vue+swiper背景图随swiper改变
    uni.navigateTo和uni.switchTab的区别
  • 原文地址:https://www.cnblogs.com/straybird/p/3158723.html
Copyright © 2020-2023  润新知