我们知道抽象在面向对象中的重要地位。
而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居然久久不能明了
很汗,一个简单的返回匿名函数居然将我迷糊了很久。
因此如上代码记录在此,以作备忘

转载于:https://www.cnblogs.com/McJeremy/archive/2009/01/14/1375779.html

JavaScript抽象类及Class.create备忘相关推荐

  1. JavaScript Office文档在线编辑备忘

    来源: http://www.cnblogs.com/jianyi0115/articles/677712.html http://www.cnblogs.com/fxwdl/archive/2009 ...

  2. js-new、object.create、bind的模拟实现【转载备忘】

    //创建Person构造函数,参数为name,age function Person(name,age){this.name = name;this.age = age; }function _new ...

  3. Spring Spring MVC Hibernate 整合备忘

    以下为此三种框架整合配置的详细备注,以及部分问题备忘 项目结构和配置文件可访问 Github 查看 1. pom.xml 尽量使用 Maven 管理项目依赖以减少包引入时的麻烦,以及避免跨开发工具问题 ...

  4. Aurora开发备忘

    Aurora开发备忘 Aurora开发备忘 1 screen文件 1.1 字段只读 1.2 lov 弹出式选择框,带查询按钮和查询条件 1.3 通过 js手动执行dataSet中的查询 1.4 在js ...

  5. jQuery学习笔记--JqGrid相关操作 方法列表 备忘 重点讲解(超重要)

    JqGrid相关操作备忘 方法列表 特别推荐:怎样获取某一方某一列的值: [html] view plaincopy var rowdata=jQuery("#list").jqG ...

  6. Webstorm常用快捷键备忘(Webstorm入门指南)

    WebStorm 是jetbrains公司旗下一款JavaScript 开发工具.被广大中国JS开发者誉为"Web前端开发神器"."最强大的HTML5编辑器". ...

  7. mysql一些操作个人备忘(持续更新)

    安装mysql数据库目录 1./usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/home/mysql/var ##指定安装后的 ...

  8. vue 插件 滑块验证_VUE接入腾讯验证码功能(滑块验证)备忘

    最近在用VUE做个简单的用户系统,登录注册需要验证码,想找个那种拖动的,找geetest居然已经不面向小客户了(或者说只有收费套餐). 腾讯防水墙的验证码免费使用,有2000/小时的免费额度,对于小网 ...

  9. azure_Azure ML算法备忘单

    azure 云计算 , 机器学习 (Cloud Computing, Machine Learning) A common question often asked in Data Science i ...

最新文章

  1. C# 实现Oracle中的数据与Excel之间的转换
  2. 第8章3节《MonkeyRunner源码剖析》 5
  3. 天联高级版客户端_天联客户端登录的KIS旗舰版打印单据问题
  4. 21-Heartbeat配置文件authkey重要参数讲解
  5. mysql 不知道这样的主机_求救!!连接本机数据库时出现不知道这样的主机
  6. kafka 集群_单机版kafka集群部署
  7. 快速入门人工智能,这波福利不能错过!
  8. Hibernate 4.3 ORM工具
  9. AbstractEndpoint 和 ProtocolHandler
  10. aspose word 转pdf中文乱码_pdf转word——都是乱码!怎么办
  11. ios 怎么判断字符串的字节数_iOS 计算字符串长度-boundingRectWithSize:
  12. 直接拿来用!最火的Android开源项目(一) (转)
  13. 红皮书--调试及修复
  14. 今天rpm装glibc和glibc-common版本,出现二个包相互依赖,解决办法
  15. android--------自定义控件 之 组合控件篇
  16. DevOps使用教程 华为云(3)规划 用户故事地图 需求规划 功能规划 思维导图
  17. 摄氏温度和华氏温度换算(vb源码)
  18. 音视频常见码率、帧率等概念介绍
  19. h5让图片转圈的动效,让页面动起来
  20. 使用阿里云实现简单的直播

热门文章

  1. LeetCode 551. 学生出勤记录 I
  2. LeetCode 134. 加油站(贪心)
  3. LeetCode 707. 设计链表(List)
  4. LeetCode 897. 递增顺序查找树(中序遍历)
  5. Python批量删除错误图片、修改文件名以及删除重复图片
  6. celery异步执行任务在Django中的应用实例
  7. Hive关于数据表的增删改(内部表、外部表、分区表、分桶表 数据类型、分隔符类型)
  8. 怎么给域账号映射服务器,如何给每个域用户映射网络驱动器?
  9. 卖萌屋算法工程师思维导图part3—深度学习篇
  10. ACL 2010-2020研究趋势总结