目前为止我认为这是最佳的声明对象的模式,将今天学到的东西写下

  1. <script type="text/javascript">
  2. function Constructor(obj,options){
  3.  
  4. this.selector = options.selector;
  5. this.time = options.time;
  6. this.step = options.step;
  7. this.obj = document.getElementById(obj);
  8. //私有方法,将不被共享,所以此方法在各个实例中不是不相等的
  9. this.fuck = function(){
  10. //code here
  11. alert('fuck');
  12. }
  13. }
  14.  
  15. //公共方法,原形继承,方法在实例中是相等的
  16. Constructor.prototype.getName = function(){
  17. //code here
  18. alert(this.selector);
  19.  
  20. }
  21. Constructor.prototype.setName = function(){
  22. //code here
  23. alert(this.time);
  24. }
  25. Constructor.prototype.getIndex = function(){
  26. //code here
  27. alert(this.step);
  28. }
  29.  
  30. //call继承,通过继承可以扩充实例化后的对象的作用域,call(obj,[,arr1[,arr2[,arr3]]]);
  31. //obj作为第一个参数即是this指针的指向,通过重新定义指针,可以将函数的作用域赋予继承对象中;
  32. //后面的参数为可选项,以逗号分隔开。这是与apply方法区别之处;
  33. function callFunc(a,b){
  34. this.a = a;
  35. this.b = b;
  36. this.c = function(){
  37. return this.a + this.b;
  38. }
  39. }
  40.  
  41. //apply继承
  42. //call继承,通过继承可以扩充实例化后的对象的作用域,call(obj,[arr1,arr2,arr3]);
  43. //obj作为第一个参数即是this指针的指向,通过重新定义指针,可以将函数的作用域赋予继承对象中;
  44. //后面的第二个参数为可选项,以数组形式存在。这是与apply方法区别之处;
  45. function applyFunc(a,b){
  46. this.a = a;
  47. this.b = b;
  48. this.c = function(){
  49. return this.a * this.b;
  50. }
  51. }
  52.  
  53. //实例化一个对象Constructor1
  54. var Constructor1 = new Constructor('slider',{
  55. selector:'selector',
  56. time:2000,
  57. step:30
  58. });
  59. //实例化一个对象Constructor2
  60. var Constructor2 = new Constructor('slider',{
  61. selector:'selector',
  62. time:2000,
  63. step:30
  64. });
  65.  
  66. console.log(Constructor1 instanceof Constructor);//true
  67. console.log(Constructor2 instanceof Constructor);//true
  68.  
  69. console.log(Constructor1.fuck == Constructor2.fuck);//false
  70.  
  71. //call继承callFunc中作用域
  72. callFunc.call(Constructor1,1,2);
  73. console.log(Constructor1.c());//3
  74.  
  75. //apply继承applyFunc中作用域
  76. applyFunc.apply(Constructor1,[3,2]);
  77. console.log(Constructor1.c());//6
  78.  
  79. </script>

  

javascript构造函数+原形继承+作用域扩充的更多相关文章

  1. JavaScript 构造函数的继承

    JavaScript 构造函数的继承 在上一篇文章中讲述了 JS 对象.构造函数以及原型模式,这篇文章来讨论下 JavaScript 的继承 继承是 OO 语言中的一个最为人津津乐道的概念.许多 OO ...

  2. Javascript 构造函数原型继承机制

    我们先聊聊Js的历史,1994年Netscape公司发布了Navigator浏览器0.9班.这是历史上第一个比较成熟的网络浏览器.轰动一时.但是,这个版本的浏览器只能用来浏览,不具备交互功能,最主要的 ...

  3. JavaScript构造函数、继承的理解

    前两天稍微深入一点点理解了原型和原型链,然后就开始有挺多疑问的: function dog() { this.name = "huahua"; } var cat = new do ...

  4. Javascript构造函数的继承

    仅供学习参考,原文链接:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_inheritance.html 今天要介绍 ...

  5. JavaScript构造函数+原型创建对象,原型链+借用构造函数模式继承父类练习

    虽然经常说是做前端开发的,但常常使用的技术反而是JQuery比较多一点.在JavaScript的使用上相对而言少些.尤其是在创建对象使用原型链继承上面,在项目开发中很少用到.所以今天做个demo练习一 ...

  6. (三)Javascript面向对象编程:非构造函数的继承

    Javascript面向对象编程:非构造函数的继承   这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使 ...

  7. (二)Javascript面向对象编程:构造函数的继承

    Javascript面向对象编程:构造函数的继承   这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承 ...

  8. Javascript面向对象编程(三):非构造函数的继承(对象的深拷贝与浅拷贝)

    Javascript面向对象编程(三):非构造函数的继承   作者: 阮一峰 日期: 2010年5月24日 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现&quo ...

  9. Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰

    Javascript面向对象编程(二):构造函数的继承   作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生 ...

随机推荐

  1. css属性之vertical-align详解

    inline-block 该值会让元素生成一个内联级块容器(inline-level block container).一个inline-block的内部会被格式化成一个块盒,而该元素本身会被格式化成 ...

  2. css中的clear的正真意义

    网上包括w3cschool 的说法都是 不允许浮动.消除浮动 这样的说法,却看了还是不知道什么意思,一些地方说不通. 所以找到w3c css 的英文文档,如下是节选: 'clear'Values ha ...

  3. alter database open resetlogs

    使用resetlogs选项,会把当前的日志序号(log sequence number)重设为1,并抛弃所有日志信息.在以下条件时需要使用resetlogs选项: 在不完全恢复(介质恢复): 使用备份 ...

  4. 华为oj 统计字符串不同字符

    #include <stdio.h> #include <string.h> int firstSingle(char *str) { int hash[128]={0}; f ...

  5. struct可以拥有class般的构造函数

    struct A { int a, b; A(int x, int y) :a(x), b(y){} }; int main() { A a(1, 2); cout << a.a < ...

  6. 《图解CSS3》——笔记(二)

    作者:大漠 勘误:http://www.w3cplus.com/book-comment.html 2014年7月15日15:58:11 第二章  CSS3选择器 2.1  认识CSS选择器 2.1. ...

  7. C语言基础学习基本数据类型-其他整数类型

    其他整数类型 初学C语言时,int类型会满足你对整数的大多数需求. C语言还提供了三个关键字用以修饰基本的整数类型:short.long和unsigned.有以下几个注意点: (1)C语言没有具体规定 ...

  8. js运算符的优先级

    自上向下优先级降低 运算符 描述 . [] () 字段访问.数组下标.函数调用以及表达式分组 ++ -- - ~ ! delete new typeof void 一元运算符.返回数据类型.对象创建. ...

  9. 自制单片机之十二……AT89C2051烧写器的制做与调试

    现在都用S52了,还用C2051干嘛!价格也差不多.但是C2051的体积要比S51.S52小很多,而且引脚只有20只,在一些简单的控制中,这些引脚已足够了,小的体积更具有优势些.但目前好像还没有支持在 ...

  10. c#秒转时分秒

          2个办法 @{             int hour = item.track / 3600;             int min = (item.track - hour * 3 ...