codeing or artist ?
记得大学第一节编程课,教授说,"如果一件事儿有对错,那么是科学。如果有美丑好坏,那么是艺术。" 一个能顺利运行还能让人阅读时体验思维美妙的代码,就是艺术和科学的结合。能运行的程序并不是好程序,能当作文章来读的才是。在我看来代码是一种特殊的文体,程序猿其实会写诗。

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;

 

posted on 2017-03-31 17:19  codeing-or-artist-??  阅读(124)  评论(0编辑  收藏  举报