• [设计模式]JS的性质


    目录:

    1. JavaScript的灵活性

    2. 面向对象设计

    3. 函数是一等对象

    JavaScript的灵活性

    JS最强大的特性是其灵活性。例子:用不同的方法完成相同的任务,启动和停止一个动画。

    1.    过程式编写
    /*
     * use functions
     */
    function startAnimation() {
        //...
    }
    
    function stopAnimation() {
        //...
    }
    
    2.    面向对象编写
    /*
     * Anim class 
     */
    var Anim = function() {
        //...
    };
    Anim.prototype.start = function() {
        //...
    };
    Anim.prototype.stop = function() {
        //...
    };
    
    //Usage
    var myAnim = new Anim();
    myAnim.start();
    //...
    myAnim.stop();
    
    
    var Anim2 = function() {
        //...
    };
    Anim2.prototype = {
        start: function() {
            //...
        },
        stop: function() {
            //...
        }
    };
    
    3.
    /**
     * 为Function对象添加自定义方法
     * @param {String} name 方法的名称
     * @param {Function} fn 用于新方法的函数
     */
    Function.prototype.method = function(name, fn) {
        this.prototype[name] = fn;
    };
    //用上面的方法为class Anim添加方法
    var Anim3 = function() {
        //...
    }
    /*
    function Anim3() {
        //...
    }*/
    Anim3.method('start', function(){
        //...
    });
    Anim3.method('stop', function(){
        //...
    });
    
    4.
    //链式调用
    Function.prototype.method2 = function(name, fn) {
        this.prototype[name] = fn;
        return this;
    }
    
    var Anim4 = function() {
        //...
    }
    Anim4.method2('start', function() {
        console.log('start');    
    }).method2('stop', function() {
        console.log('stop');
    });
    //Usage
    var myAnim = new Anim4();
    myAnim.start();
    myAnim.stop();

    弱类型语言

    一个变量可以属于几种类型之一,这取决于其包含的数据。

    布尔值、数值型、字符串型、对象类型、包含可执行代码的函数类型、空类型(null)、未定义类型(undefined)

    如果想将null和undefined用在期望是一个对象的地方都会造成一个类型错误异常

    原始数据类型按值传递,而其他数据类型(除undefined)则按引用传递。

    JS中的类型转换

    1. 数值或布尔值转变为字符串:String()
    2. 把字符串转换成数值:parseFloat()/parseInt()
    3. 把字符串或数值转变成为布尔值:双重”非”    var bool = !!num;
    console.log(10 + ' abc');           //”10 abc”
    console.log(true + 'abc');          //”trueabc”
    var a = true;
    console.log(a.toString());          //"true"
    console.log('3'*'5');               //15 两个字符串都转为数字
    console.log(3 - 'b');               //NaN
    

      

     

    函数是一等对象

    函数可以存储在变量中,可以作为参数传给其他函数,可以作为返回值从其他函数传出,还可以在运行时进行构造

  • 相关阅读:
    Android开发学习之路-使用Handler和Message更新UI
    Android开发学习之路-Service和Activity的通信
    Android开发学习之路-自定义ListView(继承BaseAdapter)
    URI、URL、URN
    理解 node.js 的事件循环
    创建hexo风格的markdown页面
    heroku
    js通过沿着作用域链还是原型链查找变量
    浏览器中实现3D全景浏览
    数据可视化图表ECharts
  • 原文地址:https://www.cnblogs.com/mackxu/p/2936160.html
Copyright © 2020-2023  润新知