zoukankan      html  css  js  c++  java
  • 三、悟透javascript中的function

    除了方法,function还可以用来声明“类”,就是C#中的class。通过伪装的方式。代码如下:

     <script type="text/javascript">
        function Car() {
            this.color = "none";
            if (typeof Car._initialize == "undefined") {
                Car.prototype.showColor = function () {
                    alert(this.color);
                }
            }
            Car._initialize = true;
        }

        var car = new Car();
        car.showColor();
        car.color = "blue";
        car.showColor();
    </script> 

    function变量是引用类型,内容是他本身也就是函数体。

    javascript中的对象都有一个特点,里面存储的都是name/value。

    var car = new Car(); new运算符生成的是一个object。

    相当于

    var car2 = {};//建一个空对象

    //将car2的原型设置为Car.prototype,这一步是通过javascript内部的Object.create实现的,但是此函数是内部函数无法直接访问

    Car.call(car2);//修改函数调用的上下文

    alert(car2.color);

    javascript不支持重载,原因是同名的function只能有一个,并且function函数的参数个数可以是任意的。

    可以通过arguments对象伪装重载。通过传入对象的个数不同,判断个数而执行不同的方法。在开发jquery的插件时就要经常使用arguments对象实现函数的伪重载。

    javascript中的this是函数上下文,不是在声明的时候决定的,而是在调用的时候决定的。因为全局函数其实就是window的属性,所以在顶层调用全局函数时this是指window对象。

    利用“this指向函数调用者”的特性,可以实现链式调用。

    使用链式调用的关键点就是要返回调用者本身,也就是this指针。

  • 相关阅读:
    face-morpher过程函数分析
    python,在路径中引用变量的方法
    【django学习】request.POST与request.POST.get两者主要区别
    微信小程序wx.uploadFile的两个坑
    python PIL/cv2/base64相互转换
    OpenCV-Python cv2.imdecode()和cv2.imencode() 图片解码和编码
    cv2.imread()
    详解Ubuntu Server下启动/停止/重启MySQL数据库的三种方式(ubuntu 16.04)
    python使用post请求发送图片并接受图片
    前端 img标签显示 base64格式的 图片
  • 原文地址:https://www.cnblogs.com/tomkillua/p/2611394.html
Copyright © 2011-2022 走看看