zoukankan      html  css  js  c++  java
  • 探讨构造函数内部的方法的问题

    使用构造函数的主要问题,就是每个方法都要在实例上重新创建一遍。

    探讨构造函数内部的方法(或函数)的问题,首先看下两个实例化后的属性或方法是否相等。

    1 var box1=new Box('Lee',100); //传递一致 
    2 var box2=new Box('Lee',100); //同上
    3 alert(box1.name==box2.name); //true,属性的值相等
    4 alert(box1.run==box2.run); //false,方法其实也是一种引用地址 
    5 alert(box1.run()==box2.run()); //true,

    方法的值相等,因为传参一致可以把构造函数里的方法(或函数)用 new Function()方法来代替,得到一样的效果,更加证明,他们最终判断的是引用地址唯一性

    1   function box(name,age){
    2       this.name=name;
    3       this.age=age;
    4       this.run=newFunction("return this.name+this.age+'运行中...'");
    5       //new Function()唯一性
    6 }

    我们可以通过构造函数外面绑定同一个函数的方法来保证引用地址的一致性,但这种做法没什么必要,只是加深学习了解:

     1  function Box(name,age){
     2      this.name=name;
     3      this.age=age;
     4      this.run=run;
     5 }
     6 
     7 function run(){
     8      //通过外面调用,保证引用地址一致
     9      return this.name+this.age+'运行中...';
    10 } 

    虽然使用了全局的函数 run()来解决了保证引用地址一致的问题,但这种方式又带来了一个新的问题,全局中的 this 在对象调用的时候是 Box 本身,而当作普通函数调 用的时候,this又代表 window(而window很可能没有相应的属性)。

  • 相关阅读:
    Java基本数据类型转换
    Java中的数据类型
    Java常见关键字
    HashMap源码分析(jdk 8)
    函数参数
    存储盘在系统中对应的naa号
    Python处理文本换行符
    Python文件操作中的方法:.write()换行
    此示例示意标准输出函数print的用法
    主机端查看到的wwpn 不是以:分割解决办法
  • 原文地址:https://www.cnblogs.com/hyds/p/10851448.html
Copyright © 2011-2022 走看看