zoukankan      html  css  js  c++  java
  • 构造函数模式

    1、要了解面向对象的思想我们需要了解构造函数模式,首先创建一个类;

    function
    Fn(){ this.x = 100;//this->f1; this.getX = function(){ console.log(this.x);//this->要看getX执行的时候才知道; } } var f1 = new Fn; f1.getX();->方法中的this是f1 输出100; var s = f1.getX;->把f1对应的属性名为getX后面的函数的属性值赋值给s; s();->this是window,输出undefined;
    2.类具有普通函数一面,当函数执行时var 的num 其实只是当前形成的私有作用域中的私有变量而已,它和f1 这个实例没有任何关系;
    只有this.xxx=xxx,才相当与给f1这个实例增加方法;
    
    function Fn(){
    var num = 10this.x = 100;
    
    this.getX = function(){
    
          console.log(this.x);
    
           }
    }
    var f1 = new Fn;
    console.log(f1.num)-> undefined;
    3.在构造函数模式中,浏览器会默认把实例返回(返回的是一个对象数据类型的值),如果自己手动写了return返回,
    //返回的是一个基本数据类型的值,当前实例不变;例如 return 100;
    //返回的是一个引用数据类型的值,当前的实例的值会被替换掉;return {name:"hello"} f1 就不是Fn的实例了;而是对象{name:"hello"}
    
    function Fn(){
    this.x = 100;
    
    this.getX = function(){
    
    console.log(this.x)
    
    }
    return {name:"hello"}
    }
    var f1 = new Fn;
    console.log(f1);
    4.f1和f2都是Fn这个类的实例,都拥有x和getX两个属性,但是这两个属性有各自的私有属性,所以f1.getX === f2.getX->false;
    function Fn(){
    this.x = 100;
    
    this.getX = function(){
    
    console.log(this.x)
    }
    var  f1 = new Fn;
    var f2 = new Fn;

    //in:检测某一个属性是否属于这个对象;attr in object;

    console.log("getX" in f1)->true;
  • 相关阅读:
    随笔之过账模版
    随笔之转移日记账
    模式窗口的处理方式
    生产领料的问题
    询问对话框,缓存用户设置
    AX2009 连接外部Orcal与SQL区别
    AX2012全新的批处理方式
    AX调用.dll
    AX在query中添加自己的函数
    Java通过代理上传文件到Azure blob
  • 原文地址:https://www.cnblogs.com/han6054/p/5345691.html
Copyright © 2011-2022 走看看