zoukankan      html  css  js  c++  java
  • JavaScript抽象类及Class.create备忘

    我们知道抽象在面向对象中的重要地位。
    而JavaScript虽不是一门户严格意义上的面向对象语言,但,它也可以有自己的面向对象实现。
    当然包括抽象。
    在JavaScript中,虚方法可以看作该类中没有定义的方法,但已经通过this指针使用了.
    通过下面的示例可以看出:
     1var tmp=function()
     2{
     3  {
     4     this.ini.apply(this,arguments); 
     5   //这里的arguments是构造函数的
     6//this.ini通过this调用,但却是未定义的。
     7//将在其prototype中给出实现
     8  }

     9}

    10//实现虚方法 ini,且提供给构造函数调用
    11tmp.prototype.ini=function()
    12{
    13  alert(arguments[0]);
    14}

    15var tt=new tmp('a');

    在prototype.js中,对抽象类及类的创建有一段经典的实现:
    如下:
     1 var Class=
     2 {
     3   create:function()
     4   {
     5     return function()  //返回一个匿名函数,也就是一个函数对象
     6     {      
     7        this.ini.apply(this,arguments);  //此时的arguments是函数对象的构造函数传递过来的参数对象
     8     }
     9   }
    10 }
    11 
    12 var tmp=Class.create();
    13 
    14 //此时tmp相当于
    15 //var tmp=function()
    16 //{
    17 //  this.ini.apply(this,arguments);
    18 //}
    19 //可以通过alert(tmp.toString());看出
    20 tmp.prototype.ini=function()
    21 {
    22       alert(arguments.length);  //这里的arguments是ini自身的参数
    23 }
    24 var ttt=new tmp('adf');

    因为掉入了面向对象的泥潭,导致对Class.create居然久久不能明了
    很汗,一个简单的返回匿名函数居然将我迷糊了很久。
    因此如上代码记录在此,以作备忘
  • 相关阅读:
    PHP date 格式化一个本地时间/日期
    Unix时间戳(Unix timestamp)转换工具
    Ubuntu下搭建NodeJS+Express WEB开发框架
    高手指南PHP安装配置
    thinkphp系统常量与自定义常量
    UDP 构建p2p打洞过程的实现原理(持续更新)
    iOS标准时间与时间戳相互转换
    java 时间戳和PHP时间戳 的转换
    Windows与Linux/Mac系统时间不一致的解决方法
    推荐25款php中非常有用的类库
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1375779.html
Copyright © 2011-2022 走看看