canvas教程

深入浅出javascript的封装与继承(3)

字号+ 作者:H5之家 来源:H5之家 2015-11-11 09:06 我要评论( )

第三个问题是虚函数,在JS里面讨论虚函数是没有太大的意义的。虚函数的一个很大的作用是实现运行时的动态,这个运行时的动态是根据子类的类型决定的,但是JS是一种弱类型的语言,子类的类型都是var,只要子类有相应

第三个问题是虚函数,在JS里面讨论虚函数是没有太大的意义的。虚函数的一个很大的作用是实现运行时的动态,这个运行时的动态是根据子类的类型决定的,但是JS是一种弱类型的语言,子类的类型都是var,只要子类有相应的方法,就可以传参“多态”运行了。比强类型的语言如C++/Java作了很大的简化。

最后再简单说下ES6新引入的class关键字
//需要在strict模式运行
 'use strict';
 class MyString{
   constructor(str){
     this.content = str;
   }
   toString(){
     return this.content;
   }
  //添加了static静态函数关键字
   static concat(str1, str2){
     return str1 + str2;
   }
  }

 //extends继承关键字
 class UString extends MyString{
   constructor(str){
    //使用super调用父类的方法
      super(str);
    }
  }

 var str1 = new MyString("hello"),
 str2 = new MyString(" world");
 console.log(str1); //输出MyString {content: "hello"}
 console.log(str1.content); //输出hello
 console.log(str1.toString()); //输出hello
 console.log(MyString.concat(str1, str2));//输出hello world

 var ustr = new UString("ustring");
 console.log(ustr); //输出MyString {content: "ustring"}
 console.log(ustr.toString()); //输出ustring

  从输出的结果来看,新的class还是没有实现属性私有的功能,见第27行。并且从第26行看出,所谓的class其实就是编译器帮我们实现了上面复杂的过程,其本质是一样的,但是让代码变得更加简化明了。一个不同点是,多了static关键字,直接用类名调用类的函数。ES6的支持度还不高,最新的chrome和safari已经支持class,firefox的支持性还不太好。

最后,虽然一般的网页的JS很多都是小工程,看似不需要封装、继承这些技术,但是如果如果能够用面向对象的思想编写代码,不管工程大小,只要应用得当,甚至结合一些设计模式的思想,会让代码的可维护性和扩展性更高。所以平时可以尝试着这样写。



 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • canvas的神奇用法 javascript技巧笔记 CFEI.NET

    canvas的神奇用法 javascript技巧笔记 CFEI.NET

    2017-04-30 12:00

  • Canvas学习:绘制矩形

    Canvas学习:绘制矩形

    2017-04-24 17:02

  • npm install canvas简明指南

    npm install canvas简明指南

    2017-04-23 18:02

  • 《JavaScript库EaselJS教程》(LYNDA.COM EASELJS FIRST LOOK)[光盘镜像]

    《JavaScript库EaselJS教程》(LYNDA.COM EASELJS FIRST LOOK)[光盘镜

    2017-04-22 17:00

网友点评
t