zoukankan      html  css  js  c++  java
  • JavaScript学习总结(三)

    面向对象的Javascript

    Javascript是基于对象的,而并非基于类,在Javascript中“一切皆对象”。但是,Javascript的函数式语言的特性使得它本身是可编程的,它可以变成你想要的任何形式。
    

    原型继承

    JavaScript 中的继承是通过原型链来实现的,调用对象上的一个方法,由于方法在Javascript对象中是对另一个函数对象的引用,因此解释器会在对象中查找该属性,如果没找到则在其内部对象prototype上搜索。由于prototype对象与对象本身的结构是一样的,因此这个过程会一直回溯到发现该属性,则调用该属性,否则报告一个错误。关于原型继承,看下面这个例子
    
        function base(){
            this.baseFunc = function () {
                alert("base behavior");
                }
        }
        function middle () {
            this.middleFunc = function () {
                alert("middle behavior");
                }
        }
        middle.prototype = new base();
        function final () {
            this.finalFunc = function () }
                alert("final behavior");
                }
        }
        final.prototype = new middle();
        function test (){
            var obj =new final();
            obj.baseFunc();
            obj.middleFunc();
            obj.finalFunc();
    }
    
    test ();
    
    在function test中,我们new 了一个final对象,然后一次调用base,middle,final的方法,由于obj对象上并没有此方法。则在原型链上搜索,由于final的原型链上包含middle,middle的原型链上包含base,因此执行这个方法就实现了类的继承。
    

    new 操作符

    看个例子
    
        function shape (type){
            this.type = type || "rect";
            this.calc = function () {
                return "calc,"+this.type;
            }
        }
        var triangle = new shape("triangle");
        alert("triangle.calc());//calc,triangle
        var circle = new shape ("circle");
        alert(circle.calc());//calc, circle
    
    在javascript中,通过new操作符来作用于一个函数,实质上会发生这样的动作:
        1.首先创建一个空对象。
        2.然后调用apply()方法,将这个空对象传入作为apply的第一个参数以及上下文参数。这样函数内部的this将会被这个空对象所替代。
    
        var triangle = new shape('triangle');
        //上一句相当于下面的代码
        var triangle = {}
        shape.apply(triangle,["tirangle"]);
    
    
  • 相关阅读:
    Linux进程间通信(IPC)
    mq_setattr
    mq_getattr
    mq_unlink
    mq_receive
    mq_send
    mq_close
    POSIX消息队列
    mq_open
    C语言关键字
  • 原文地址:https://www.cnblogs.com/JoyXianFighting/p/5837886.html
Copyright © 2011-2022 走看看