zoukankan      html  css  js  c++  java
  • js的constructor

    js创建一个构造函数,会默认在原型链上添加一个constructor的属性,它保存了构造函数内的代码。

    一般情况下我们不需要去改动它,但是有些时候我们会不经意的改写它。

    比如下面这个例子:

    var Fn = function(){
    
        };
    
        Fn.prototype = {
            a:function(){
                
            }
        };

    原型链是赋值操作而不是添加属性,所以把默认的constructor属性覆盖掉了,我们可以这样解决:

    var Fn = function(){
    
        };
    
        Fn.prototype.a = function(){
    
        };

    或者:

    var Fn = function(){
    
        };
    
        Fn.prototype.a = {
            constructor:Fn,
            a:function(){
    
            }
        };

    还有一种情况就是在做类式继承的时候也容易把constructor覆盖掉,比如:

    var Base = function(){
    
        };
    
        var Aaa = function(){
    
        };
    
        Aaa.prototype = new Base();

    修复constructor只需添加一句代码:

    Aaa.prototype.constructor = Aaa;
  • 相关阅读:
    this指针是什么?
    C++多态实现原理
    面试题2:实现Singleton模式
    面试题1:赋值运算符函数
    1.Two Sum
    朴素贝叶斯
    K近邻法
    感知机
    数据类型、用户交互、赋值运算
    蓝牙技术概述
  • 原文地址:https://www.cnblogs.com/gongshunkai/p/6652405.html
Copyright © 2011-2022 走看看