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. ASP.NET Web API中展示实体Link相关的方面

    有时候,向服务端请求一个实体,我们希望返回如下的格式: links: [    href: http://localhost:8901/api/user/diaries/2013-08-17,    ...

  2. AngularJS路由系列(2)--刷新、查看路由,路由事件和URL格式,获取路由参数,路由的Resolve

    本系列探寻AngularJS的路由机制,在WebStorm下开发.主要包括: ● 刷新路由● 查看当前路由以及所有路由● 路由触发事件● 获取路由参数 ● 路由的resolve属性● 路由URL格式 ...

  3. 总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式

    在ASP.NET MVC的视图页向控制器传递异步数据,可能是数组,JavaScript对象,json,表单数据,等等. 关于数据,JavaScript对象有时候和json长得一模一样,有么有? var ...

  4. Time Zones And Daylight Savings Time

    This page describes code for working with Time Zones and Daylight Savings Time. Neither VBA nor VB6 ...

  5. Linux、apache 无法使用PHP创建目录和文件

    因为项目的需要,这几天搭建了虚拟机,环境是centos7+lamp,可是搭建好网站后,即使把权限放开了(777),我试了改父文件夹权限:重新创建文件夹,改权限再移动文件:更换文件夹的属主.统统不行.这 ...

  6. Android之sqlite3命令行简单使用

    首先需要定位到database所在的目录里面,然后使用命令 sqlite3 databasename(数据库的名字)进入 常用命令: 1. .table     列取该数据库下面的数据表名 2. .s ...

  7. ExtJS 4.2 教程-06:服务器代理(proxy)

    转载自起飞网,原文地址:http://www.qeefee.com/extjs-course-6-server-proxy ExtJS 4.2 教程-01:Hello ExtJS ExtJS 4.2 ...

  8. ViewHolder的标准写法

    最标准的写法,就是为每一个AdapterView的子View新建一个对应的ViewHolder,同时声明为prtivate final static.ViewHolder类中定义各种成员变量. pub ...

  9. Python 模块 re (Regular Expression)

    使用 Python 模块 re 实现解析小工具   概要 在开发过程中发现,Python 模块 re(Regular Expression)是一个很有价值并且非常强大的文本解析工具,因而想要分享一下此 ...

  10. 第三方IDC性能测评主要指标

    弹性计算性能弹性计费模式就是 "即用即付 ",最小单位可以按小时来计算.随着云计算负载的增长,企业购买服务器带宽时的资源.   1.弹性计算性能   弹性计费模式就是"即 ...