• 关于 Js 原型链继承的一些解惑


    <script>
    			function Father() {
    				this.property = true;
    			}
    
    			Father.prototype.getSuperValue = function() {
    				return this.property;
    			}
    
    			function Son() {
    				this.subproperty = false;
    			}
    			Son.prototype = new Father();
    			Son.prototype.getSonValue = function() {
    				return this.subproperty;
    			}
    			
    			var instance =new Son();
    			alert(instance.getSonValue());
    		</script>
    

    Father 函数:

    为 Father 的函数原型增加了一个方法 getSuperValue 返回自身的 property 属性。

    Son 函数:

    Son 的 prototype 指针指向了一个 Father 的实例。由于 Son 的 prototype 默认指向自身的函数原型,这里更改了它的指向。

    由于 new 了一个 Father 对象,这个对象的自身的原型对象是 Father,这也就是意味着 Son 可以访问 Father 的各种方法。

    var instance =new Son();

    这一句创建了一个 Son 的实例。

    Son
    subproperty 对象自带属性
    getSonValue 通过 prototype 访问到
    getSuperValue 通过 prototype 访问到
    property 对象自带属性

    这里解释一下

    var fa = new Father();无法访问子类属性的原因。

    Son.prototype = new Father();
    			Son.prototype.getSonValue = function() {
    				return this.subproperty;
    			}
    

    new Father()这条语句开辟了一个新的内存,它指向了 Father 的原型。但是Son.prototype.getSonValue 是在新开辟的内存上的操作,没有操作到 Father 的原型对象。如果要操作到 Father 的原型需要:

    Son.prototype.__proto__.getSonValue =function(){
    				return this.property;
    			};
    
  • 相关阅读:
    delphi内存管理
    Dbgrid导出为word
    indy传输文件
    TMethod
    http状态码详解
    如何严格设置php中session过期时间
    http和https的优缺点,区别与工作原理
    session的生命周期
    Mysql分库分表方案,如何分,怎样分?
    【观点】程序员应知——循序渐进 狼人:
  • 原文地址:https://www.cnblogs.com/HyPhoenix/p/15067367.html
Copyright © 2020-2023  润新知