zoukankan      html  css  js  c++  java
  • [设计模式]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
    

      

     

    函数是一等对象

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

  • 相关阅读:
    windbg javascript脚本--将内存内容保存到文件
    js补全前置零
    javascript打印对象(object)
    c++ primer学习指导(23)--4.2算术运算符
    c++ primer学习指导(22)--3.2.1直接初始化和拷贝初始化
    c++ primer学习指导(21)--2.2.4名字的作用域
    c++ primer学习指导(19)--2.1.2类型转换
    c++ primer学习指导(18)-- 2.1.1算术类型
    搭建sock5代理
    Centos 6 yum源
  • 原文地址:https://www.cnblogs.com/mackxu/p/2936160.html
Copyright © 2011-2022 走看看