zoukankan      html  css  js  c++  java
  • JS学习笔记-构造函数篇

    创建实例
    funtion Fn (){
        var num = 10;    
        this.x = 100;
        this.getX = function(){
            console.log(this.num); 
        }
    }
    var f1 = new Fn;
    f1.getX();
    最后执行的结果是:undefined
    说明: 类有普通的里面,当函数执行的时候,var num只是当的形成的私有作用域中的私有变量而已,它和我们的f1这个实例没有任何的关系,只有this.xxx=xx才相当于给f1增加私有的属性和方法,才和我们的f1有关系;

    funtion Fn (){
        var num = 10;    
        this.x = 100;
        this.getX = function(){
            console.log(this.num); 
        }
        return false;
        return {"name","123"};
    }
    var f1 = new Fn;
    console.log(f1);
    说明:在构造函数欧式中,浏览器会默认的把我们的实例返回(返回的是一个数据类型的值);如果我们手动写了return返回:
        返回的是一个基本数据类型就那个的值,房钱实例是不变的,例如:return 100;我们的f1还是当前Fn的实例
        返回的是一个引用数据类型的值,当前的实例会被自己的返回值给替换掉,例如返回:return {"name","123"};我们的f1就不再是Fn的实例了,而是对象{“name”,"123"};

    funtion Fn (){
        var x= 10;    
        this.getX = function(){
            console.log(this.x); 
        }
    }
    var f1 = new Fn;
    说明:检测某个实例是否属于这个类---》instanceof
    console.log(f1.instanceof Fn);//-->true
    这方法可以检测数据类型:
    f1 instanceof Array -> false;
    f1 instanceof Object  -> true
    这个检测数据类型的方法可以和typeof比较
    funtion Fn (){
        var x= 10;    
        this.getX = function(){
            console.log(this.x); 
        }
    }
    var f1 = new Fn;
    var f2 = new Fn;
    说明 : f1和f2都是Fn这个类的一个实例,都拥有x和getX两个属性,但是这个属性是各自的私有属性,所以console.log(f1.getX ==== f2.getX);//--> false

    in 检测某一个属性是否属于这个对象(attr in object),不管是私有的属性还是公用的属性,只要存在,用in检测都是true

    //hasOwnProperty:用来检测某一个属性是否是这个对象的“私有属性”,这个方法只能检测私有属性
    console.log(f1.hasOwnProperty("getX"));-->true  "getX"是f1的私有属性

    //检测某一个属性是否是这个对象的“公有属性”

    function hasPubProperty(obj,attr){
        return (attr in obj) && !obj.hasOwnProperty(attr);
    //属性是对象的属性,但又不是私有的属性,必定是公有属性;
    }





    还有分享一个技术群,474471759,跟随里面的大佬一起成长,进群之后里面的JimY就是我。

    如果我的博客解决了你的问题,那请你给个关注吧!
  • 相关阅读:
    java线程小结1
    String和StringBuffer
    java队列的实现
    java栈的实现
    java链表
    this与super关键字总结
    JVM内存杂记1
    面试题18:删除链表节点
    面试题17:打印从 1 到最大的 n 位数
    面试题16:数值的整数次方
  • 原文地址:https://www.cnblogs.com/DreamSeeker/p/7264378.html
Copyright © 2011-2022 走看看