• (一)javascript面向对象:(2)类


        在 javascript面向对象:(1)类 中我们了解到类的概念是用函数function表示的,
    那么到底在什么情况下才是类,什么情况下才是函数呢?下面我们进行更深入的研究:

    用示例来证明才是真理:

    示例一:
    function Student()
    {
        
    this.name = "小明";
        
    this.sex = "";
        
    this.age = 84;
    }
    var stu = new Student();
    alert(
    "姓名:" + stu.name);
    alert(
    "性别:" + stu.sex);
    alert(
    "年龄:" + stu.age);
    示例一明显是类的用法,先创建类的实例对象,然后通过对象来访问类的公有成员变量。
    为什么this.name,
    this.sex,this.age是公有成员呢?
    首先我们要理解this的意思,this是指针,指向当前类的对象,所以name属于当前类Student
    的成员变量,在javascript中,只要这样申明的成员变量都属于公有的,那什么情况下是私有的?

    function Student()
    {
        
    var name = "小明";//this.name = "小明";    
        this.sex = "";
        
    this.age = 84;
    }
    上面用 
    var name = "小明";中的name就是私有的,在外部你是访问不到的。

    示例二:
    function Student()
    {
        
    var name = "小明";
        
    var sex = "";
        
    var age = 84;
        
        
    return {name : name, sex : sex, age : age};
    }
    带返回值的肯定是函数了,调用方法: Student();

    示例三:
    function Student()
    {
        
    this.name = "小明";
        
    this.sex = "";
        
    var age = 84;
        
        
    return {name : this.name, this.sex : sex, age : age};
    }
    带返回值的肯定是函数了,不过只在方法内访问不需要this.name这样申明,但无语法错误。

    示例四:
    function Student()
    {
        
    this.name = "小明";
        
    this.sex = "";
        
    var age = 84;
    }
    既有公有变量,又有私有变量,但如果做函数使用就毫无意义。
    函数使用仅仅是给变量赋初始值,但这些变量却没有任何用处,
    在函数外部访问不到,在内部没有用处。
    作为类使用:
    var stu = new Student(); 
    stu.name 
    = "小强";

    示例五:
    function Student()
    {
        
    this.name = "小明";
        
    this.sex = "";
        
    var age = 84;
        
    this.updateName = function(name){
            
    this.name = name;
        }
    }
    这里加上了公有方法:updateName,毫无疑问是当类使用了,
    因为这个函数在内部没有被调用,当然是留给类的对象调用了。

    示例六:
    function Student(name,sex,age)
    {
        
    this.name = name;
        
    this.sex = sex;
        
    this.age = age;
    }
    这种就像java和c#中类的构造函数:
    var stu = new Student("小明","","58");
    alert(stu.name);
    alert(stu.sex);
    alert(stu.age);

    然而你当函数使用也无妨,不会有什么错误
    调用: Student(
    "小明","","58");
    你改变了函数中的name,sex,age,那你在外部能访问吗?所以无意义。

    看了上面的示例发现,类和函数的使用还是没有明显的区别和界限,
    完全由你自己来决定如何使用,但是得考虑定义这个类或者函数的意图,
    到底是表达类,还是函数?

    类:
    1> 必须使用new
    2> 必须申明公有成员变量或者公有的方法(没有任何公有的就没意义了)
    3> 无返回值

    函数:
    1> 不需要使用new
    2> 可以不申明公有成员变量或者公有方法(有的话没有太大意义)
    3> 有返回值的一定是函数
  • 相关阅读:
    组合数据类型练习
    词法分析
    ORACLE聚合函数细节
    Centos7 最小系统安装Redis
    JQuery版评分控件
    Javascript & JQuery读书笔记
    HTML5&CSS3读书笔记
    Javascript版显示相应图片的详细信息
    MVC2,MVC3,MVC4和MVC5的不同
    Microsoft Office Excel cannot access the file
  • 原文地址:https://www.cnblogs.com/wangwei123/p/1735240.html
Copyright © 2020-2023  润新知