`
katelin
  • 浏览: 30665 次
  • 性别: Icon_minigender_2
  • 来自: 厦门
社区版块
存档分类
最新评论

瞒天过海法处理父类构造函数带参数

阅读更多
这个方法以前从某个贴子上学的。但是只知道是那样用,不知道是为啥。我今天忽然明白了。以前一直奉行拿来主义,不求甚解( ̄▽ ̄)~* 。。太丢人了。。下面写一下我的理解,希望大家不要觉得我罗嗦


当父类的构造函数带参数时如何处理。我们先避开这个问题,看一下一个简单的类:

例1:
<SCRIPT LANGUAGE="JavaScript">
<!--
    function MyClass(){
      this.name = 'my defined class';
      this.myMethod = myOuterMethod;
    }

    function myOuterMethod(){
      alert(this.name); //这里的this, 即是MyClass的实例。这点很关键喔。
    }

    var mc = new MyClass();
    mc.myMethod(); //打印 'my defined class'

//-->
</SCRIPT>



类MyClass里定义了myMethod方法,它指向一个外部定义的函数(姑且这么叫)myOuterMethod。
当用MyClass的实例来调用这个myMethod方法时,可以发现myOuterMethod里的this其实就是MyClass的实例。

这个例子很好理解吧^_^。那么再看例2。。

例2:
<SCRIPT LANGUAGE="JavaScript">
  function Parent(id){
    this.id = id;
    this.getLocation = function(){
      alert(this.id + ' at XiaMen');
    }
  }

  Parent.prototype.getId = function(){
    alert(this.id);
  }

  function Child(id){
    /**就像上面MyClass里的myMethod属性指向myOuterMethod方法那样。指向Parent函数*/
    this._super = Parent;
     /**执行这个方法.这个时候Parent函数 (注意它现在是函数)里的this为Child类的实例!*/
     this._super(id); 	
   }

   Child.prototype = new Parent(); //继承

    var c1 = new Child('katelin');
    c1.getLocation(); // 打印 'katelin at XiaMen'
    c1.getId(); // 打印 'katelin'
//-->
</SCRIPT>



想让Parent里的属性变成自己的属性。例1的方法给了我们瞒天过海的启示~ 在Child类里令一个属性_super(随便取名的啦)指向父类的Parent方法。请对比下例1。这时_super就像myMethod, Parent就像myOuterMethod. 因此用Child的实例来调用_super方法时,Parent里面的this指的就是Child的实例~

因此我们执行this._super(id)的时候, Parent方法里的this.id, this.getLocation就这么变成了Child实例的囊中之物了∩__∩y 。但是, 相信大家已经看明白了,这仅限与写在Parent方法里的属性和方法喔(听着好怪)。


如果要继承写在Parent外面的方法,比如getId,那就得用Child.prototype = new Parent();这个就不说了。大家都知道得~
分享到:
评论
2 楼 katelin 2007-10-09  
afcn0我明白你的意思。^_^。当然也可以用

<SCRIPT LANGUAGE="JavaScript">  
  function Parent(id){   
    this.id = id;   
    this.getLocation = function(){   
      alert(this.id + ' at XiaMen');   
    }   
  }   
  
  Parent.prototype.getId = function(){   
    alert(this.id);   
  }   
  
  function Child(id){
    /**这里的this会替换Parent里的this*/
	Parent.apply(this, arguments);  
  }   
  
  Child.prototype = new Parent(); //继承   
  
  var c1 = new Child('katelin');   
  c1.getLocation(); // 打印 'katelin at XiaMen'   
  c1.getId(); // 打印 'katelin'   
//-->  
</SCRIPT> 
1 楼 afcn0 2007-10-08  
就是修改函数执行的context而已,其实完全可以Parent.call(this,id)一句话替代_super的,js执行过程函数动态的context和scope就是js的特色

相关推荐

    瞒天过海--偷换概念的诡辩.doc

    瞒天过海--偷换概念的诡辩.doc

    房地产兵法论专集之十三-瞒天过海.docx

    房地产兵法论专集之十三-瞒天过海.docx

    110数字编码记忆法[借鉴].pdf

    这些细节可能涉及各种代码、函数编号、版本号和算法等,有效地记忆和运用这些信息是提升工作效率的关键。在这个背景下,“110数字编码记忆法”应运而生,成为帮助软件开发人员提升记忆效率的有效工具。 110数字编码...

    电源技术中的电脑电源的技术参数

    1.功率  功率当然是电源的首要指标,也是许多人所知道的惟一指标。现在Prescott核心的:Pentium 4电脑功耗...这为保证电源长期可靠工作提供了保障,但也正因此,许多劣质电源得以瞒天过海,它们都敢标注挺大的功率,

    网络江湖36计

    6. **数字生活技能**:包括云存储、远程协作工具的使用,以及如何处理数字遗产问题。 7. **网络法律知识**:了解版权法、网络侵权规定,以及如何应对网络欺凌和诽谤。 8. **技术应用**:介绍最新的网络技术,如...

    Java cglib实例代码

    来执行原有函数,在执行前后加入自己的东西,改变它的参数值,也可以瞒天过海,完全干别的。 AOP 没有出现以前,该领域经典的设计模式是 Decorator,像 Java IO Stream 的设计就是如此。不过,如果为每个 DAO, 每个...

    云南省玉溪市易门县综合素质历年真题【2008年-2018年带部分答案】(一).docx

    - 《三十六计》中的策略包括瞒天过海、趁火打劫、暗度陈仓、浑水摸鱼等,这些都是兵法中的经典战术。 10. **货币政策知识**: - 中央银行买卖有价证券的主要目的是调节货币供给量,以此影响经济活动。 11. **青...

    「隐藏文件和文件夹的方法」.pdf

    #### (1) 瞒天过海法 这种方法的核心在于通过修改文件的扩展名来隐藏文件。具体操作如下: - **修改文件扩展名**:选择需要隐藏的文件,将其扩展名更改为系统中不存在的类型,例如`*.ffh`、`*.jjk`等。 - **注意...

    IOT安全三十六计.pdf

    在某些情况下,攻击者可以利用strstr()函数的行为,通过精心构造的输入,绕过安全检查。例如,一个setcookie操作,攻击者通过修改cookie值,可能使得strstr()函数返回真值,导致认证通过。 无中生有策略 无中生有...

    浅析三十六计在人力资源管理工作中的运用.doc

    本文以“瞒天过海”和“浑水摸鱼”两计为例,探讨它们在人力资源管理中的应用。 1. “瞒天过海”之人才聘用 “瞒天过海”原意是隐藏真实意图,以达到预期目标。在人力资源管理中,这一策略体现在人才聘用过程中。...

    专题资料(2021-2022年)03第三章商务谈判中的谋略.doc

    在上述案例中,山下巧妙地运用了“瞒天过海”的谋略,成功地与松永达成了合作协议,为自己赢得了丰厚的利润。这一策略的核心在于通过制造假象,隐藏真实意图,从而在谈判中占据优势。 首先,山下精心准备,通过一封...

    用数字密码巧记三十六计.doc

    例如,胜战计中的“瞒天过海”教会我们如何在不利的条件下巧妙地隐蔽自己的意图和行动;而敌战计的“围魏救赵”则展示了如何通过直接或间接的方式,化解眼前的危机。 数字密码法是一种将抽象信息具象化的技术。通过...

    小古文——滥竽充数精选.doc

    故事讲述了南郭处士在齐宣王时期,利用国王喜欢大规模吹竽合奏的机会,混入乐队中,由于合奏时可以以假乱真,他得以瞒天过海,没有露出马脚。但当齐宣王去世,其子齐湣王继位后,他偏好听人单独吹竽,南郭处士不得不...

    数字安全极客的社会工程探秘之旅.pdf

    数字安全极客的社会工程探秘之旅 ...通过使用OpenCV进行识别,然后结合图像处理,可以更好地进行攻击。 刘学森的演讲为我们提供了许多有价值的社会工程学知识。我们可以通过掌握社工的秘密和技术来更好地防御攻击。

    孙子兵法用于现代企业管理.pptx

    例如,“瞒天过海”可以理解为企业采取创新策略,避开竞争对手的关注;“借刀杀人”则可引申为企业通过合作伙伴或市场机制,间接解决竞争对手的问题。 总之,《孙子兵法》的智慧在于它提供了一种系统性的思考框架,...

    2011年广西壮族自治区市场营销策划师(中级)知识大全.pdf

    2. 瞒天过海策略:这是一种中国古代兵法中的策略,意在通过隐藏真实意图,在公开行动中融入秘密计划,以达成出其不意的效果,适用于市场策略中的创新和竞争策略。 3. 群体管理理念:这个理念认为,将个人组织成团队...

    2011年广西壮族自治区市场营销策划师(中级)知识大全.docx

    2. "瞒天过海"的策略强调的是将秘密之计隐藏在公开的行动中,以达到出其不意的效果。这在营销中可以表现为巧妙地推出新产品或服务,通过非传统方式吸引消费者注意力。 3. "群体要大于个体相加"的管理理念倡导团队...

    孙子兵法与战略(全集).pptx

    《孙膑兵法》是战国时期的孙膑所著,而《三十六计》则是一本集合了历代智谋的兵法书,其内容包括胜战计、敌战计、攻战计、混战计和败战计,每类包含六计,如瞒天过海、空城计等,体现了灵活多变的策略应用。...

    移动智能终端安全.ppt

    1. **硬件安全能力**:确保芯片内部的系统程序、终端参数、安全数据以及用户数据不受篡改或非法获取。 2. **操作系统安全能力**:实现对系统资源调用的监控和保护,确保涉及安全的系统行为在可控状态下进行。 3. **...

Global site tag (gtag.js) - Google Analytics