• JavaScript编程(终极篇)


    JavaScript 实现是由以下 3 个不同部分组成的:
        核心(ECMAScript)
        文档对象模型(DOM)
        浏览器对象模型(BOM)

    1、数据类型

    typeof 运算符

    对变量或值调用 typeof 运算符将返回下列值之一:
        undefined - 如果变量是 Undefined 类型的
        boolean - 如果变量是 Boolean 类型的
        number - 如果变量是 Number 类型的
        string - 如果变量是 String 类型的
        object - 如果变量是一种引用类型或 Null 类型的

    2、Object 对象

    Object 对象具有下列属性:
    constructor
        对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。
    Prototype
        对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。

    Object 对象还具有几个方法:
    hasOwnProperty(property)
        判断对象是否有某个特定的属性。必须用字符串指定该属性。(例如,o.hasOwnProperty("name"))
    IsPrototypeOf(object)
        判断该对象是否为另一个对象的原型。
    PropertyIsEnumerable
        判断给定的属性是否可以用 for...in 语句进行枚举。
    ToString()
        返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的值。
    ValueOf()
        返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同。
    注释:上面列出的每种属性和方法都会被其他对象覆盖。

    3、实例对象

    声明和实例化

    对象的创建方式是用关键字 new 后面跟上实例化的类的名字:
    var oObject = new Object();

    本地对象

    本地对象就是JavaScript定义的类(引用类型)。它们包括:
        Object
        Function
        Array
        String
        Boolean
        Number
        Date
        RegExp
        Error
        EvalError
        RangeError
        ReferenceError
        SyntaxError
        TypeError
        URIError

    4、this、call、apply

    4、函数

    函数是由这样的方式进行声明的:关键字 function、函数名、一组参数,以及置于括号中的待执行代码。
    函数的基本语法是这样的:
    function functionName(arg0, arg1, ... argN) {
      statements
    }

    arguments 对象

    检测参数个数
    还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可

    Function 对象(类)

    用 Function 类直接创建函数的语法如下:
    var obj = new function(arg1, arg2, ..., argN, function_body)

    在上面的形式中,每个 arg 都是一个参数,最后一个参数是函数主体(要执行的代码)。这些参数必须是字符串。

    5、匿名函数

    (function(){

    })()

    用处:加载后执行,私有函数不对外开放;

    var fn = (function () {
        var basket = [];
        function privateMethod() {
            console.log("匿名函数已执行");
        }
        return {
            publicMethod: function () {
                privateMethod();
            }
        };
    }())

    ----------------------------------------------

    (function (window, factory) {
        //执行
        window.lib = factory();
    })(this, function () {
        //主体函数
        var pluns = {
            output: function (b) {
                return b;
            }
        };
        return pluns;
    })
    //调用
    var put = lib.output('msg');
    console.log(put);

    CommonJS框架:

    第一步:

    var moudules = {}; //对象字面量
    function define(name, deps, impl) {
        for (var i = 0; i < deps.length; i++) {
            deps[i] = moudules[deps[i]];
        }
        moudules[name] = impl.apply(impl, deps);
        console.log(moudules[name]);
    }
    moudules.get = function(name) {
        return moudules[name];
    }
    define('bar', [], function () {
        function hello(who) {
            return 'Let me introduce:' + who;
        }
        return {
            hello: hello
        }
    });
    var bar = moudules.get('bar');
    console.log(bar.hello('nihao'));

    第二步

    (function(define){
                define(function () {                
                    console.log("匿名函数已执行");
                });
            })(typeof define == "function" ? define : function (factory) { factory()});
    fn.publicMethod();

    6、构造函数

    7、原型(prototype)

     DOM(文档对象模型)
        Document
        Body
        Style
        ……

    BOM(浏览器对象模型)

      Window 对象
      Navigator 对象
      Screen 对象
      History 对象
      Location 对象

     HTML 对象

    <body>

    <a>

    ……

    所有HTML树节点

    封装 - 把相关的信息(无论数据或方法)存储在对象中的能力
    聚集 - 把一个对象存储在另一个对象内的能力
    继承 - 由另一个类(或多个类)得来类的属性和方法的能力
    多态 - 编写能以多种方法运行的函数或方法的能力

    对象字面量

    Facade模式
    var module = (function () {
        var _private = {
            val: 5,
            get: function () {
                console.log(this.val);
            },
            set: function (val) {
                this.val = val;
            },
            run: function () {
                console.log('running');
            },
            jump: function () {
                console.log('jumping');
            }
        };
        return {
            facade: function (args) {
                _private.set(args.val);
                _private.get();
                if (args.run) {
                    _private.run();
                }
            }
        }
    }());
    //调用
    module.facade({ run: true, val: 10 });

    module
    exports
    require
    global

  • 相关阅读:
    gRPC中protobuff type和C# type原生标量对应表
    ASP.NET MVC Json序列化时区差解决方法
    多项目解决方案使用的配置文件是哪一个?
    理解DDD中Factory和Repository
    在Docker Desktop for Windows中Dokcer容器如何访问宿主机上的服务
    ASP.NET Core日志记录基本知识
    理解微信小程序小例子
    [MODBUSTCP]
    [pahoMQTT库的使用]
    [搭建MQTT服务器及python客户端]
  • 原文地址:https://www.cnblogs.com/sntetwt/p/8674554.html
Copyright © 2020-2023  润新知