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

JavaScript编程(终极篇)的更多相关文章

  1. 【HANA系列】【第二篇】SAP HANA XS使用JavaScript编程详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第二篇]SAP HANA XS ...

  2. Javascript编程模式(JavaScript Programming Patterns)Part 1.(初级篇)

    JavaScript 为网站添加状态,这些状态可能是校验或者更复杂的行为像拖拽终止功能或者是异步的请求webserver (aka Ajax). 在过去的那些年里, JavaScript librar ...

  3. 什么是JavaScript闭包终极全解之一——基础概念

    本文转自:http://www.cnblogs.com/richaaaard/p/4755021.html 什么是JavaScript闭包终极全解之一——基础概念 “闭包是JavaScript的一大谜 ...

  4. Javascript本质第二篇:执行上下文

    在上一篇文章<Javascript本质第一篇:核心概念>中,对Javascript执行上下文做了解释,但是这些都是基于Javascript标准中对执行上下文的定义,也就是说理论上的东西,本 ...

  5. 【HANA系列】SAP HANA XS使用JavaScript编程详解

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  6. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...

  7. HTML5 Canvas(画布)实战编程初级篇:基本介绍和基础画布元素

    欢迎大家阅读HTML5 Canvas(画布)实战编程初级篇系列,在这个系列中,我们将介绍最简单的HTML5画布编程.包括: 画布元素 绘制直线 绘制曲线 绘制路径 绘制图形 绘制颜色,渐变和图案 绘制 ...

  8. 如何编写高质量的 JS 函数(4) --函数式编程[实战篇]

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/ZoXYbjuezOWgNyJKmSQmTw作者:杨昆 [编写高质量函数系列],往期精彩内容: ...

  9. JavaScript性能优化篇js优化

    JavaScript性能优化篇js优化   随着Ajax越来越普遍,Ajax引用的规模越来越大,Javascript代码的性能越来越显得重要,我想这就是一个很典型的例子,上面那段代码因为会被频繁使用, ...

  10. 面向对象编程(C++篇2)——构造

    目录 1. 引述 2. 详述 2.1. 数据类型初始化 2.2. 类初始化 1. 引述 在C++中,学习类的第一课往往就是构造函数.根据构造函数的定义,构造函数式是用于初始化类对象的数据成员的.无论何 ...

随机推荐

  1. 面试题07_用两个栈实现队列——剑指offer系列

    题目描写叙述: 用两个栈实现一个队列. 队列的声明例如以下,请实现它的两个函数appendTail 和 deleteHead.分别完毕在队列尾部插入结点和在队列头部删除结点的功能. 解题思路: 栈的特 ...

  2. canvas使用1

    画直线: ? 1 2 3 4 5 6 7 8 9 10 11 var c = document.getElementById("myCanvas"); //不要忘写document ...

  3. javascript中{},[]中括号,大括号使用

    一.{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数. 如:var LangShen = {"Name":"Langshen",&qu ...

  4. SpringBoot 中使用 @Value 为 static 变量赋值

    原文:https://www.jianshu.com/p/ea477fc9abf7 例如: public class Utils { @Value("${test.host}") ...

  5. View Programming Guide for iOS_读书笔记

    关于Window的定义的要点 Windows do not have any visible content themselves but provide a basic container for ...

  6. oracle exp/imp命令详解

    E:\>exp help=y 通过输入 EXP 命令和用户名/口令,您可以 在用户 / 口令之后的命令: 实例: EXP SCOTT/TIGER 或者,您也可以通过输入跟有各种参数的 EXP 命 ...

  7. 如何用 Java 实现 Web 应用中的定时任务?

    定时任务,是指定一个未来的时间范围执行一定任务的功能.在当前WEB应用中,多数应用都具备任务调度功能,针对不同的语音,不同的操作系统, 都有其自己的语法及解决方案,windows操作系统把它叫做任务计 ...

  8. .AVLFile Extension

    .AVLFile Extension File Type 1ArcView Legend File   Developer ESRI Popularity           4.1 (7 Votes ...

  9. [转]MongoDB基本使用

    转自 : http://www.cnblogs.com/TankMa/archive/2011/06/08/2074947.html 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可 ...

  10. 存储过程参数CHAR传过来null导致超时.

    调用的时候不要传NULL,可以传 '' ALTER PROCEDURE [dbo].[up_UC_GetUCExecuteEPList]          @Code VARCHAR(3) ,--ch ...