发表于: 2017-05-06 09:09:09

1 990


今天完成的事情:

今天雪峰买的两本AngularJS的书到了,有一本是AngularJS入门与进阶,讲的内容比较基础和实用,正适合现在看,而且还是今年刚出版的新书。

重点看了一下AngularJS的过滤器、服务、依赖注入的内容,对依赖注入还不是太懂,只知道那是一种引用外部依赖或服务使其被注入或引用传递到一个独立的对象或客户端中,然后成为该客户端状态的一部分。今天晚上的小课堂是讲原型链的,前后一共讲了差不多一个半小时,也是收获良多。

明天计划的事情:

知识看的也差不多了,开始动手写任务代码,不会的问师兄们,加快进度。

遇到的问题:

感觉我对JS的很多底层原理都很模糊,以为自己会用了就懂了,结果被人一问还是什么都说不出来,什么是闭包、什么是封装、什么是原型,prototype,service和filter有什么区别,这些都需要不断深入的学习。

收获:

所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。

比如,猫的原型对象现在可以这样写,

function Cat(name,color){

  this.name=name;

  this.color=color;

}

在就可以生成实例对象了

       var cat1 = new Cat("大毛","黄色");

  var cat2 = new Cat("二毛","黑色");

  alert(cat1.name); // 大毛

  alert(cat1.color); // 黄色

这时cat1和cat2会自动含有一个constructor属性,指向它们的构造函数。

  alert(cat1.constructor == Cat); //true

  alert(cat2.constructor == Cat); //true

Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。

这意味着,我们可以把那些不变的属性和方法,直接定义在prototype对象上。

 function Cat(name,color){

    this.name = name;

    this.color = color;

  }

  Cat.prototype.type = "猫科动物";

  Cat.prototype.eat = function(){alert("吃老鼠")};

如此对constructor和prototype属性的来龙去脉都有了了解,对封装的意义也有了认识。


返回列表 返回列表
评论

    分享到