口口相传的JS的面相对象的封装与继承-演道网

以前读书上java课的时候

天天要面向对象

然后我还记得

老师说去面试一定会被问面向对象的问题

然而

至今为止

我也就遇到一个人问过我这个问题

However

我一直也就待在一家公司里


面向对象语言的要求

一种面向对象语言需要向开发者提供四种基本能力:

  1. 封装 – 把相关的信息(无论数据或方法)存储在对象中的能力

  2. 聚集 – 把一个对象存储在另一个对象内的能力

  3. 继承 – 由另一个类(或多个类)得来类的属性和方法的能力

  4. 多态 – 编写能以多种方法运行的函数或方法的能力


每次写js 好像就是 everything is 对象

但是写起来又乱七八糟  代码好坏层次不齐

可能还没有掌握面向对象编程

虽然我对象常常都面对着我在编程


一般我们如果写一个计时器

这样看着好像很不错了

想要调用方法就timer.f_timer() 一下 然后获取timer.n

但是实际想想

timer 里面的属性跟timer 也没有什么区别,他们的可访问性跟timer是一样的

如果timer是全局,里面的属性也是全局的

要改里面的n 随便改改

所以一般情况下

会这样写

可是这样写就又不是很好

timer1.f_time 和 timer2.f_time  的是互相独立的

每使用 new 运算符调用 timer() 

就会生成一个新的对象并生成一个新的函数绑定在这个新的对象上

每构造一个新的对象

浏览器就要开辟一块空间

其实最好就是 timer1.f_time 和 timer2.f_time 指向同一个函数对象

然后就要用到

原型 prototype 

原型 prototype  f_times 依赖的是timer 而不是time1跟time2

但是奇怪的事情就是这样的

大多数

我还是用最上面那种写法

ps:早睡早起,常做运动,多与异性交朋友~

转载自演道,想查看更及时的互联网产品技术热点文章请点击http://go2live.cn

发表评论

电子邮件地址不会被公开。 必填项已用*标注