实习总结系列4

pre-hot:

  • 这次实习伴随着短租的烦恼和毕设的逼近,已经接近尾声,还是习惯一个人写代码,住的地方的椅子感觉要比办公室的舒服多了。一个人写代码还特别舒服,不吵。
  • 一个人最聪明的地方在于有自知之明,认知自己。他很清楚地了解自己有哪些优点和缺点,并且知道怎么去扬长避短,就算起初的效果并不明显,但是只要认真,自信,珍惜时间就一定会慢慢进步。希望一直做最好的自己。

body-go

  • html做好语义化和对seo友好,eg多用ul li h1-h6 strong b tag
  • 突然发现mdn里面讲闭包讲得很好
    看完之后谈谈我的理解,闭包理解得好,绝逼有助于模块化代码编写。闭包是指js函数拥有自由独立的变量。换句话说,定义在闭包这个对象中的函数可以记住他创建时候的环境。
词法作用域:
function init() {
    var name = "csdn";
    function displayName() {
        alert(name);
    }
    displayName();
}
init();

another case:

function makeFunc() {
    var name = "csdn";
    function displayName() {
        alert(name);
    }
    return displayName;
}

var myFunc = makeFunc();
myFunc();

有意思的地方在于displayName在执行之前被其外围函数返回。myFunc是一个闭包。由来两部分组成,函数以及创建该函数的环境–由闭包创建时在作用域中的所有局部变量组成。在这里,闭包myFunc由函数displayName和闭包创建时存在的“csdn”字符串组成。
another case to understand closures:

function makeAdder(x) {
    return function(y) {
        return x + y;
    };
}

var add5 = makeAdder(5);
var add10 = makeAdder(10);

cnsole.log(add5(2));//7
console.log(add10(2));//12

函数makeAdder是一个函数工厂,带有参数x并返回一个函数,创建将指定的值和其参数求和的函数。闭包add5和add10共享相同的函数定义以及保存不同的环境。两个环境当中一个x值为5一个x值为10.

用途
  • 模拟私有方法。定义公共函数访问私有变量和函数。
var Counter = (function () {
    var privateCounter = 0;
    function changeBy(val) {
        priveteCouner += val;
    }
    return {
        increment: function() {
            changeBy(1);
        },
        decrement: function() {
            changeBy(-1);
        },
        value: function() {
            return privateCounter;
        }
    }
})();

console.log(Counter.value()); /* logs 0 */
Counter.increment();
Counter.increment();
console.log(Counter.value()); /* logs 2 */
Counter.decrement();
console.log(Counter.value()); /* logs 1 */

之前的case每个闭包都有不同的环境,在此,只创建了一个环境为三个函数Counter.increment,Counter.decrement,Counter.value所共享.该共享环境创建于一个匿名函数体内,该匿名函数一经定义立刻执行;环境中有两个私有项,都无法在匿名函数外部访问,只能通过匿名包装器返回的三个公共函数访问。

常见错误:在循环中创建闭包。
html:
<p id="help">Helpful notes will appear here</p>
<p>E-mail: <input type="text" id="email" name="email"></p>
<p>Name: <input type="text" id="name" name="name"></p>
<p>Age: <input type="text" id="age" name="age"></p>
js:
function showHelp(help) {
    document.getElementById('help').innerHTML = help;
}

function makeHelpCallback(help) {
    return function() {
        showHelp(help);
    };
}

function setupHelp() {
    var helpText = [
        {'id': 'email', 'help': 'Your e-mail address'},
        {'id': 'name', 'help': 'Your full name'},
        {'id': 'age', 'help': 
        'Your age (you must be over 16)'}
    ];
    for (var i = 0; i < helpText.length; i++) {
        var item = helpText[i];
        document.getElementByid(item.id).
        onfocus =makeHelpCallback(item.help);
    }
}   

setupHelp();
性能考量

如果不是因为特殊任务而需要闭包,在没有必要的情况下,在其他函数中创建函数是不明智的,因为闭包对脚本性能有负面影响,包括处理速度和内存消耗。eg在创建新的对象或者类时,方法通常应该关联于对象的原型,而不是定义到对象的构造器中,原因是这将导致每次构造器被调用时,也就是都会被重新赋值一次(也就是说,为每一个对象的创建)。
case1:

function MyObject(name, message) {
    this.name = name.toString();
    this.message = message.toString();
    this.getName = function() {
        return this.name;
    };
    this.getMessage = function() {
        return this.message;
    };
}

case1没有考虑到闭包的益处,请看case2.
case2:

function MyObject(name, message) {
    this.name = name.toString();
    this.message = message.toString();
}
MyObject.prototype = {
    getName: function() {
        return this.name;
    },
    getMessage: function() {
        return this.message;
    }
};

in case2,继承的原型可以为所有对象共享,且不必在每一次创建对象时定义方法。之前我了解过,这是js创建对象最好的方法–构造+原型–混合法,当初还没想到其中隐含的闭包。

at-end

  • 有几个好习惯,希望自己保持下去,并越做越好。1.写css保持如下顺序:z-index position display margin border padding width height about-text bgc color…2.写代码时严格与公司团队项目规范保持一致。作为校招前端过来的唯一男生,要自重,技术上必须至少领先于公司里面所有女生,不能让女生瞧不起。3.珍惜生命里的每一天,努力工作,努力学习技术,认真写高质量可复用代码。在自己的技术和职业生涯上永远保持主动权。
  • 另外,珍惜每一次的犯错,以后的以后坚决不犯同样的错误。
  • 找到最适合自己的生活节奏,进一步提高身体素质,多喝水果,减少熬夜,早睡早起,多吃水果蔬菜,每两天洗发一次,减少脱发。工作提高效率,上班时多向前辈们请教,探讨问题。少加班,课外多学习,除去gitlab自己的git上多活跃,看知乎,看w3cplus,看mdn,看手册,看书,多用codepen和jsfiddle。多总结多思考。
  • 宽于待人,严于律己。公司里面向别人请教过许多问题,所以以后别人有问题要问你时也要毫不吝啬,公司里面技术,生活方面互帮互助。和同事友好相处,相互关照相互联系,保持微笑面容和善良之心,不随意揣度别人。
  • 这周又一次让姐伤心了,其实我也不想这样,但是我独立意识很强,有时候对一些事情很固执,有时候也擅作主张。sorry,以后我会慢慢改正,团队合作也一样,多为别人着想。
  • 后端php学长自良可能要跳槽了,世界原来一直在转,每个人都在转。关系,距离并不能保持永久。
  • 终于要回学校了,不过回去了还是比较忙的,科三科四,毕设,这两件事情我会认真对待的,祝好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我定期更这些源码资源,以适应各平台技术的最发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我定期更这些源码资源,以适应各平台技术的最发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值