javascript中this.element 指的是啥,分别举例说明下.类似this.age,this.name这我倒是知道.thanks.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中this.element 指的是啥,分别举例说明下.类似this.age,this.name这我倒是知道.thanks.相关的知识,希望对你有一定的参考价值。

举个例子,在Form的数据源中,this指的是数据源,(jquery中this和$(this)不同)而element指的是Form.
element在Form里面指向Formrun类,在Report里面指向Reportrun类;This在Class里面指向当前的类(准确的说,是类的实例),在Form、Report里面也一样;所以在Formrun、Reportrun类本身的方法里面,this与element的含义是一样的,如果在其他类里面,This就只能表示当前类了。
至于Formrun、Reportrun 类本身的范围,看看System Documentation就知道了,只有文档里面列出的方法,才属于他们自己。
可以这样一来理解:element指的是容器(窗口对象中的元素),而this指的是element容器中的每一个元素. 具体到不同Class有不同定义.例如:在Form中,elment只指的是FormRun,若在Form中的一个Button调用Button的一个Method,如This.setText则this代表的是该Button. 总之,element和this在不同的场合有不同代表不同的对象,视具体的而定
在Form中this和element小有区别,element的包容性似乎比this大一点,所以在form和report中推荐使用element,使用this可能会出现一些意想不到的错误(曾经遇到这样的问题,将this换成element就OK了)。在Class和table中一般使用this,分别表示当前类和当前记录;
参考技术A 当前代码中的一个元素,不过貌似没这么用个,一般都是getelmentbyid…

javascript算法-单链表

链表相比数组更具灵活性和扩展性。主要有节点数据以及指向节点的指针所构成。

链表中节点的实现【元素和指针】:

        let Node = function( element ){
            this.element = element;
            this.next = null;
        };

单链表的实现:

function LinkedList(){
        let Node = function( element ){
            this.element = element;
            this.next = null;
        };

        let head = null;
        let length = 0;

        this.append = function( element ){
            let newNode = new Node( element );
            let current = null;
            if( head == null ){
                head = newNode;
            }else{
                current = head;
                while( current.next ) {
                    current = current.next;
                }
                current.next = newNode;
            }
            length++;
        };

        this.size = function(){
            return length;
        };

        this.removeAt = function( pos ){
            if( pos > -1 && pos < length ){
                var current = head,
                    index = 0,
                    prev = null;

                if( pos == 0 ){
                    head = current.next;
                }else{
                    while( index++ < pos ){
                        prev = current;
                        current = current.next;    
                    }
                    prev.next = current.next;    
                    length--;
                    return current.element;
                }
            }else{
                return null;
            }
        };

        this.print = function(){
            let current = head;
            while( current ){
                console.log( current.element );
                current = current.next;
            }
        };

        this.insert = function( pos, element ){
            let newNode = new Node( element );
            let current, prev, index = 0;
            current = head;
            if( pos >= 0 && pos <= length ){
                if( pos == 0 ){
                    newNode.next = head;
                    head = newNode;
                }else{
                    while( index++ < pos ){
                        prev = current;
                        current = current.next;    
                    }
                    newNode.next = current;    
                    prev.next = newNode;
                }
                length++;
                return true;
            }else {
                return false;
            }
        };
        this.toString = function(){
            let current = head, string = ‘‘;
            while( current ){
                string += current.element + ‘,‘;
                current = current.next;
            }
            return string.substring( 0, string.length - 1 );
        };
        this.indexOf = function( element ){
            let current = head, index = -1;
            while( current ){
                index++;
                if( current.element == element ){
                    return index;
                }
                current = current.next;
            }
            return -1;
        };
        this.remove = function( element ){
            let pos = this.indexOf( element );
            return this.removeAt( pos );
        };
        this.isEmpty = function(){
            return length == 0;
        };
        this.getHead = function(){
            return head;
        }
    }    


    var oLink = new LinkedList();
    oLink.append( "java" );
    oLink.append( "php" );
    oLink.append( "javascript" );
    oLink.append( "python" );

    oLink.print();
    console.log( "-----------------------节点个数------------------------")
    console.log( oLink.size() );

    console.log( "-----------------------删除第2个元素之前------------------------")
    console.log( oLink.removeAt( 2 ) );
    console.log( "-----------------------删除第2个元素之后------------------------")
    oLink.print();
    console.log( "节点个数");
    console.log( oLink.size() );
    console.log( "-----------------------插入节点前------------------------")
    oLink.insert( 0, "c语言" );
    oLink.insert( 3, "c++语言" );
    console.log( "-----------------------插入节点后------------------------")
    oLink.print();
    oLink.insert( 4, "erlang语言" );
    console.log( "-----------------------插入节点后------------------------")
    oLink.print();
    console.log( "-----------------------节点个数------------------------")
    console.log( oLink.size() );

    console.log( "-----------------------toString------------------------")
    console.log( oLink.toString() );
    console.log( "------------------------indexOf-----------------------" );
    console.log( oLink.indexOf( "c语言2" ) );
    console.log( "------------------------clear-----------------------" );
    oLink.print();

 

以上是关于javascript中this.element 指的是啥,分别举例说明下.类似this.age,this.name这我倒是知道.thanks.的主要内容,如果未能解决你的问题,请参考以下文章

javascript 链表

javascript中使用循环链表实现约瑟夫环问题

javascript中在链表中向前(向后)移动n个节点

Javascript中的链表

JavaScript数据结构与算法-链表练习

使用javaScript来实现一个单链表