有图有真相

  1. function myfun1(){
  2. //这是私有属性
  3. var private1 = "这是私有属性1";
  4. var privateMethod = function(){
  5. alert(private1);
  6. }
  7. //这是实例属性
  8. this.publicvar = "这是实例属性1";
  9. this.public1 = function(){
  10. privateMethod();
  11. }
  12. }
  13.  
  14. //-//--------------//-//---------------------------------
  15. var newfun1 = new myfun1();
  16. newfun1.public1(); //这是私有属性
  17. alert(newfun1.publicvar);//这是实例属性
  18. alert(newfun1.private1); // undefined newfun1.privateMethod(); //运行错误
  19.  
  20. //--//--//---///------------------------------------------
  21. //--//--//---///-------------------执行1-------------------
  22. //--//--//---///------------------------------------------
  23. function myfun2(){
  24. }
  25. myfun2.staticvar = "这是静态属性2";
  26. myfun2.staticmethod = function(){
  27. alert(myfun2.staticvar);
  28. }
  29. //--//--//---///------------------------------------------
  30. //--//--//---///-------------------执行2-------------------
  31. //--//--//---///------------------------------------------
  32. var newfun2 = new myfun2();
  33. //newfun2.staticmethod();//运行错误;
  34. alert(newfun2.staticvar);//undefined
  35. //------//-------------//-------------------------------
  36. //静态私有成员
  37. var myfun3 = (function(){
  38. function privateProperty(){
  39.  
  40. }
  41. privateProperty.staticvar = "这是静态私有成员3";
  42. privateProperty.staticmethod = function(){
  43. alert(privateProperty.staticvar);
  44. }
  45. privateProperty.staticmethod();
  46. return privateProperty
  47. })();
  48. alert(newfun3.staticvar);//这是静态私有成员3
  49. //---//--------//-----------------//-------------
  50. //静态类
  51. var funcount = ;
  52. var myfun4 = new function(){
  53. funcount++;
  54. this.printCount = function(){
  55. alert(funcount);
  56. }
  57. }
  58. myfun4.printCount(); //输出1;
  59. myfun4.printCount(); //输出1;
  60. myfun4.prototype.amethod = function(){
  61. alert("原型对象4");
  62. }//运行错误
  63. var newfun4 = new myfun4();
  64. newfun4.amethod();
  65. //------------------//---------------------------------
  66. //运行错误,说明myfun3创建并实例化之后就不能再为它添加方法,属性
  67. new myfun3.constructor().printCount();//如果你确实想实例化,这样也可以.
  68. //原型继承
  69. var myfun5 = function(){
  70.  
  71. }
  72. myfun5.prototype.myfun5_extend = function(){
  73. alert("这是原型继承的5");
  74. }
  75. var myfun5_sub = function(){
  76.  
  77. }
  78. myfun5_sub.prototype = new myfun5();
  79. var newfun5 = new myfun5_sub();
  80. newfun5.myfun5_extend(); //这是原型继承的
  81. //调用继承
  82. var myfun6 = function(){
  83. this.method_p = function(){
  84. alert("这是调用继承的6");
  85. }
  86. }
  87. var myfun6_sub = function(){
  88. myfun6.call(this);
  89. }
  90.  
  91. var newfun6 = new myfun6_sub();
  92. newfun6.method_p();//这是调用继承的
  93. //覆盖
  94. var myfun7 = function(){
  95. this.method = function(){
  96. alert("这是父对象方法7");
  97. }
  98. }
  99. var myfun7_sub = function(){
  100. this.method = function(){
  101. alert("这是子对象方法8");
  102. }
  103. }
  104. myfun7_sub.prototype = new myfun7();
  105. var newfun7 = new myfun7_sub();
  106. newfun7.method(); //这是子对象方法,父对象方法被覆盖了.
  107. //多态
  108. function myfun8(a, b){
  109. var a = a;
  110. var b = b;
  111. if (typeof a == "number" && typeof b == "number") {
  112. alert(a * b);
  113. } else if (typeof a == "string" && typeof b == "string") {
  114. alert(a + b);
  115. } else {
  116. alert("输入错啦");
  117. }
  118. }
  119.  
  120. myfun8(, ); // 输出12;
  121. myfun8("hi,", "你好");//输出hi,你好;
  122. myfun8("hi", );//输入错啦.

call和apply还有bind的更多相关文章

  1. JS核心系列:浅谈 call apply 与 bind

    在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ...

  2. Javascript中call,apply,bind方法的详解与总结

    在 javascript之 this 关键字详解 文章中,谈及了如下内容,做一个简单的回顾: 1.this对象的涵义就是指向当前对象中的属性和方法. 2.this指向的可变性.当在全局作用域时,thi ...

  3. JS中call、apply、bind使用指南,带部分原理。

    为什么需要这些?主要是因为this,来看看this干的好事. box.onclick = function(){ function fn(){ alert(this); } fn();}; 我们原本以 ...

  4. Javascript中call、apply、bind函数

    javascript在函数创建的时候除了自己定义的参数外还会自动新增this和arguments两个参数 javascript中函数也是对象,call.apply.bind函数就是函数中的三个函数,这 ...

  5. 图解call、apply、bind的异同及各种实战应用演示

    一.图解call.apply.bind的异同 JavaScript中函数可以通过3种方法改变自己的this指向,它们是call.apply.bind.它们3个非常相似,但是也有区别.下面表格可以很直观 ...

  6. js里function的apply vs. bind vs. call

    js里除了直接调用obj.func()之外,还提供了另外3种调用方式:apply.bind.call,都在function的原型里.这3种方法的异同在stackoverflow的这个答案里说的最清楚, ...

  7. JS之apply,call,bind区别

    为了加深对基础知识的理解,今天再复习下js中的apply,call,bind的区别和用法.整理笔记的过程也是一个再次学习的过程. apply和call js中的调用apply和call方法可以改变某个 ...

  8. JavaScript中call、apply、bind、slice的使用

    1.参考资料 http://www.cnblogs.com/coco1s/p/4833199.html   2.归结如下 apply . call .bind 三者都是用来改变函数的this对象的指向 ...

  9. JS中的控制函数调用:call(),apply()和bind()

    所有的函数都具有call(),apply()和bind()方法.它们可以在执行方法的时候用一个值指向this,并改变面向对象的作用域. apply方法: 以下的两种表达式是等价的: func(arg1 ...

  10. JS中的call、apply、bind方法

    JS中的call.apply.bind方法 一.call()和apply()方法 1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]] ...

随机推荐

  1. careercup-链表 2.7

    2.7 编写一个函数,检查链表是否为回文. 思路:1)可以利用链表中的元素采用头插法创建一个新的链表,然后比较两个链表的元素是否相等.   2)利用快慢指针,将链表后半部分逆转之后,比较前半部分与后半 ...

  2. activity-intent-startActivity-startActivityResult

    一. Intent和startActivity 1.在一个Activtiy中可以使用startActivity()去开始另一个制定的Activity 但在android3.0(是针对平板出的产品)之后 ...

  3. 【转】iOS应用崩溃日志揭秘2

    这篇文章还可以在这里找到 英语 场景 4: 吃棒棒糖时闪退! 用户邮件说, "当rage master吃棒棒糖时应用就闪退-" 另一用户说, "我让rage master ...

  4. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载

    原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop ...

  5. JDBC学生管理系统--处理分页显示

    分页的思想: 假设一共有104条数据,每页显示10条数据: select * from student limit 0,10; 页数是index,第index页,对应的sql语句是: select * ...

  6. Hibernate占位符警告:use named parameters or JPA-style positional parameters instead.

    Hibernate占位符警告:use named parameters or JPA-style positional parameters instead. >>>>> ...

  7. 推断类型var

    1.为什么使用推断类型var var可以根据变量的初始值自动推断局部变量类型,当无法确定所用变量的具体类型时可使用var 2.如何使用推断类型var 客户端代码 static void Main(st ...

  8. [转载]Access to the path '' is denied.解决方案

    原文地址:Access to the path '' is denied.解决方案作者:趴着墙等红杏 ccess to the path '路径' is denied.我在网上找了很多资料,最后终于解 ...

  9. 8个开发必备的PHP功能(转)

    又是好几天没写博客,今天看到了个不错的文章,就转载到自己的博客,好以后查询方便. 1.传递任意数量的函数参数 我们在.NET或者JAVA编程中,一般函数参数个数都是固定的,但是PHP允许你使用任意个数 ...

  10. phpQuery轻松采集网页内容

    原文地址:phpQuery轻松采集网页内容作者:陌上花开 phpQuery是一个基于PHP的服务端开源项目,它可以让PHP开发人员轻松处理DOM文档内容,比如获取某新闻网站的头条信息.更有意思的是,它 ...