• JavaScript语言精粹--Function,类,this,对象


    1.类与对象

    在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的。

    JS对象是一种复合类型,它允许你通过变量名存储和访问,换一种思路,对象是一个无序的属性集合,集合中的每一项都由名称和值组成(听起来是不是很像我们常听说的HASH表、字典、健/值对?),而其中的值类型可能是内置类型(如number,string),也可能是对象。(在笔记一中有代码示例

    2.用 function 关键字模拟 class

    在 function 中用 this 引用当前对象,通过对属性的赋值来声明属性。如果用var声明变量,则该变量为局部变量,只允许在类定义中调用。

    function myClass() {
                this.id = 5;
                this.name = 'myclass';
                this.getName = function() {
                    return this.name;
                }
            }
            var my = new myClass();
            alert(my.id); // 5
            alert(my.getName()); // myclass
       
           
           

    >>上面我们用到了this,在这里也说明一下this的用法以及含义!联想的学习。

    this的用法以及含义

    (1)this是js的一个关键字,随着函数使用场合不同,this的值会发生变化。但是总有一个原则,那就是this指的是调用函数的那个对象

    (2)纯粹函数调用。

    function test() {
        this.x = 1;
        alert(x);
    }
    //调用
    test();

    这里的this就是全局变量。

    var x = 1;
    function test() {
        alert(this.x);
    }
    test();//1
    
    var x = 1;
    function test() {
        this.x = 0;
    }
    test();
    alert(x);//0
    //这里的全局

    (3)作为方法调用,那么this就是指这个上级对象。

    function test() {
        alert(this.x);
    }
    
    var o = {};
    o.x = 1;
    o.m = test;
    o.m(); //1

    (4).作为构造函数调用。所谓构造函数,就是生成一个新的对象。这时,这个this就是指这个对象。

    function test() {
        this.x = 1;
    }
    var o = new test();
    alert(o.x);//1

    (5).最后还有前面说的apply调用

    var x = 0;
    function test() {
        alert(this.x);
    }
    
    var o = {};
    o.x = 1;
    o.m = test;
    o.m.apply(); //0
    o.m.apply(o);//1
    //当apply没有参数时,表示为全局对象。所以值为0。

     

     

    3.在函数体中创建一个对象,声明其属性再返回

    在函数体中创建对象可利用第一点的方法,或先 new Object(); 再为各属性赋值。

    function myClass() {
                var obj =
                {
                    'id':2,
                    'name':'myclass'
                };
                return obj;
            }
            function _myClass() {
                var obj = new Object();
                obj.id = 1;
                obj.name = '_myclass';
                return obj;
            }
            var my = new myClass();
            var _my = new _myClass();
            alert(my.id);
            alert(my.name);
            alert(_my.id);
            alert(_my.name);

     

  • 相关阅读:
    elasticsearch插件开发
    elasticsearch启动流程
    HBase结构
    Scala统计一个文件所有单词出现的次数
    es基础知识
    Linux中Swap与Memory内存简单介绍
    linux 常用命令
    巅峰对决之Swarm、Kubernetes、Mesos
    【JS】JS知识小结
    【HTTP】HTTP状态码详解
  • 原文地址:https://www.cnblogs.com/zqzjs/p/4442662.html
Copyright © 2020-2023  润新知