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

  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. asp.net动态设置button的Text,Enabled属性,向后台传递参数

    前台代码:根据后台传递过来的参数动态设置 <asp:Button ID="Button1" runat="server" CommandArgument= ...

  2. 关于textbox.attributes["value"]的问题

    在“修改”时,出现这个问题,后台点击修改时,应该是文本框出现一些初始值 BLL.manager bll = new BLL.manager(); Model.manager model = bll.G ...

  3. jquery获取checkbox被选中的值

    只用一个循环,就可以找出被选中的checkbox的值 var s; $("[name = b]:checkbox").each(function () {              ...

  4. Android-操作栏之图标导航

    想实现图标向上导航功能,步子分两步走: 1.样式上要改变-->图标要变成可点击的按钮,并有一个向左的箭头. 2.功能上要实现-->实现向上导航 首先谈第一步: 对于拥有fragment的a ...

  5. Visual Studio 2015开发Android App问题集锦

    Visual Studio 2015开发Android App 启动调试始终无法完成应用部署的解决方案 创建一个Android App项目后,直接启动调试发现Visual Studio Emulato ...

  6. SQL存储过程笔记

    一.概述 存储过程(Stored Procedure)是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它. 优点:   ...

  7. 用jquery向网页添加背景图片 拉伸 模糊 遮罩层 代码

    方法一:手动添加 1.在body内任意位置添加html代码 <div id="web_bg" style=" position:fixed; _position:a ...

  8. web标准(复习)--3 二列和三列布局

    今天学习二列和三列布局,将涉及到以下内容和知识点 二列自适应宽度 二列固定宽度 二列固定宽度居中 xhtml的块级元素(div)和内联元素(span) float属性 三列自适应宽度 三列固定宽度 三 ...

  9. SQL建模错误--逗号分隔值

    最近帮一个客户分析SQL语句的问题,大致经过如下 场景: 委托方有一个用于追踪他们产品的系统,每个产品都会卖给许多客户:但是客户又被从业务上分成两类,一类是带有合作伙伴性质的,这个 合作伙伴通常会给予 ...

  10. GCD使用经验与技巧浅谈--备

    GCD(Grand Central Dispatch)可以说是Mac.iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧. dispatch_once_t必须是全局或static变量 ...