javascript到了今天,已经不再是我10多年前所认识的小脚本了。最近我也开始用javascript编写复杂的应用,所以觉得有必要将自己的javascript知识梳理一下。同大家一起分享javascript给我们带来的福利。

索引

工具

Online Javascript interpreter[在线javascript解析器]

可以在线运行javascript代码。这篇文章中的所有代码都在里面运行过。用它来做javascript实验,它是不错的选择。

运行地址:http://math.chapman.edu/~jipsen/js/

Html5 在线运行

地址:W3School在线测试工具 –canvas

JQuery在线运行

地址:W3School在线测试工具-JQuery

Closure Compiler

这是google提供的一款用于编译javascript的工具。所谓编译,是将一般可读的javascript代码编译成紧凑的,短小的javascript代码。其效果类似于jquery-x.min.js。

下载地址:https://developers.google.com/closure/compiler/

运行命令:java -jar compiler.jar --js=..\carports\assets\www\js\dataProxy.js --js_output_file=..\carports\assets\www\js\deploy.js

注意,文件路径中不能包含空格。

参见文档:https://developers.google.com/speed/articles/compressing-javascript

Javascript Performance

这是一款评估javascript应用性能的工具,它整合在google chrome的开发者工具中。在大型的javascript应用中,非常有必要对性能进行评估和跟踪。

使用方法介绍:https://developers.google.com/chrome-developer-tools/docs/cpu-profiling

JQuery

地址:http://jquery.com/

如果要跨域调用,那么要使用jsonp

个人推荐jsonp的相关文章:http://www.ibm.com/developerworks/cn/web/wa-aj-jsonp1/

Angular Js

官方网址:http://angularjs.org

InfoBox

功能:在google地图上实现自定义显示层,是google地图的infoWindow的加强版。

地址:http://google-maps-utility-library-v3.googlecode.com/svn/tags/infobox/

Json2Html

功能:将json对象转换成html dom对象

地址:https://github.com/moappi/json2html

JQuery

一个应用非常广泛的Javascript库

地址:http://jquery.com

学习插件开发:http://learn.jquery.com/plugins

学习组织代码:http://learn.jquery.com/code-organization/concepts/

JQuery UI

基于JQuery的UI库,里面的拖动,排序等效果足以胜任绝大部分界面的操作要求。

地址:http://jqueryui.com

补充一下。如果你是在移动设备上使用JQuery UI的sortable功能,那你还得引用https://github.com/furf/jquery-ui-touch-punch。注意设置sortable的handle属性,即让其拖动区域限制在一个范围内,否则,如果排序项超过了满屏,那么整个屏幕将不能被上下滑动。

JQuery Mobile

JQuery 的移动开发框架

地址:http://jquerymobile.com/

在移动设备开发上,最好使用tap事件而不是click事件,否则会遇到预想不到的麻烦。

Google Map

官方网址:https://developers.google.com/maps/documentation/javascript/tutorial?hl=zh-CN

注意,在手机设备上,必须指定地图的宽度和高度,否则地图将不会被显示。

Ceaser

官方地址:http://matthewlein.com/ceaser/

一个不错的移动动画效果

参考资料

Javascript 参考: http://www.javascriptkit.com/jsref

Javascript 参考:http://w3schools.com/jsref/default.asp

CSS 参考:http://www.w3school.com.cn/css/

技能

问题:JQuery Mobile中字体显示不清晰

在样式定义中,使用text-shadow:none来移除重影。当然,也可以用text-shadow来加上自己需要的字体阴影。

问题:JQuery Mobile中,tap事件会被执行两次

在事件处理其中,加上e.preventDefault();。代码如下:

$(document).on(“tap”, ".selector”, null, function(e){

    e.preventDefault();

    //code in the handler;

});

问题:Google地图上的线路如何计算

使用google.maps.DirectionsService。

问题:prototype中的this指的是什么对象?

this指的是对象本身。

如:

function fn() { };
fn.prototype.name = "hello";
fn.prototype.do = function () {
alert(this.name);
}; var f = new fn(); f.name = "hello1"; f.do();//hello1

问题:如何实现列表的拖动排序

使用JQuery UI 提供的sortable()插件。

问题:Javascript中的布尔类型就是true和false吗?

错误,true和false只是布尔类型的字面量,且唯一的两个字面量,Javascript中的所有类型都可以通过Boolean函数,得到布尔类型。因此,准确的说,Javascript中的布尔类型是通过Boolean函数得到的类型。

因此,以下代码是正确的。

window.myObj = window.myObj || {};

var s = “something”;

if(s){

 alert(s);   

}

var n = 3;

if(n)

{

   alert(n);

}

问题:对象多值排序

var gps = [

    [29,106],

    [29.33, 106.5323],

    [29.8890, 106.23321]

];

//以维度和经度进行排序

gps.sort(function(v1, v2){

    var lat = v1[0] – v2[0];

    var lng = v1[1] – v2[1];

    if(lat)

        return lat;

    if(lng)

        return lng;

    return 0;

});

问题:如何判断全局x对象是否为空

if(window[“x”])
{
console.log(“not null”);
}
else
{
console.log(“null or not defined”);
}

问题:如何判断变量x是否被定义

typeof(x) === ‘undefined’

问题:如何在JQuery Mobile中监听”按住”事件和“松开”事件

$(document).on(“taphold”, “.selector”, null, function(e){
//处理按住时的相关事件
}); $(document).on(“vmouseup”, “.selector”, null, function(e){
//处理手松开后的事件
});

问题:如果有效率地使用jQuery监听事件

虽然从概念上,我们可以用以下代码,使用jQuery来监听元素上触发的事件,但这样做会导致内存开销增加,使事件传递的距离增大从而导致不必要的性能降低。

$(document).on(‘click’, 'selector’, function(e){});

建议在最近的父节点来监听事件,代码如下。

$(‘最近的父节点’).on('click','监听的元素选择器,多个选择器用,号隔开',function(){
//你的代码});

问题:获取当前jQuery对象下的直接子元素

$(“.selector”).children();

问题:用jQuery Mobile获取设备的宽度和高度

$.mobile.window.width();
$.mobile.window.height();

如果上面这段代码是在浏览器下,那它返回的是浏览器可视部分的宽度和高度。

我所知道的Javascript的更多相关文章

  1. 我所知道的JavaScript中判断数据类型

    相信一提到怎么判断js的数据类型,大家都会想到的是typeof.instanceof,那么为什么有了typeof的存在还要有instanceof? typeof? 根据MDN:typeof操作符返回一 ...

  2. 《jQuery风暴》第2章 必须知道的JavaScript知识

    第2章 必须知道的JavaScript知识 JavaScript是jQuery应用的基础,掌握JavaScript这门语言是使用jQuery的基础条件.本章不会全面细致的讲解JavaScript的全部 ...

  3. 那些必须要知道的Javascript

    原文:那些必须要知道的Javascript JavaScript是前端必备,而这其中的精髓也太多太多,最近在温习的时候发现有些东西比较容易忽略,这里记录一下,一方面是希望自己在平时应用的时候能够得心应 ...

  4. 从零开始学习jQuery(剧场版) 你必须知道的javascript

    原文:从零开始学习jQuery(剧场版) 你必须知道的javascript 一.摘要 本文是jQuery系列教程的剧场版, 即和jQuery这条主线无关, 主要介绍大家平时会忽略的一些javascri ...

  5. js值----你所不知道的JavaScript系列(6)

    1.数组 在 JavaScript 中,数组可以容纳任何类型的值,可以是字符串.数字.对象(object),甚至是其他数组(多维数组就是通过这种方式来实现的) .----<你所不知道的JavaS ...

  6. js类型----你所不知道的JavaScript系列(5)

    ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型等. 1.内置类型 JavaScript 有七种内置类型: • 空值(null) • 未定义( ...

  7. 闭包----你所不知道的JavaScript系列(4)

    一.闭包是什么? · 闭包就是可以使得函数外部的对象能够获取函数内部的信息. · 闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. · 闭包就 ...

  8. let和const----你所不知道的JavaScript系列(2)

    let 众所周知,在ES6之前,声明变量的关键字就只有var.var 声明变量要么是全局的,要么是函数级的,而无法是块级的. var a=1; console.log(a); console.log( ...

  9. LHS 和 RHS----你所不知道的JavaScript系列(1)

      变量的赋值操作会执行两个动作, 首先编译器会在当前作用域中声明一个变量(如果之前没有声明过), 然后在运行时引擎会在作用域中查找该变量, 如果能够找到就会对它赋值.----<你所不知道的Ja ...

随机推荐

  1. 原生JS实现分页效果1.0

    不太完整,写的太急,等等加上完整注释,写起来还是有些难度的,写的有点水,后面再改进改进. <!DOCTYPE html><html lang="en">&l ...

  2. Winform实现Shp-栅格图形文件的读取与显示(外加shp转WKB格式存入oracle)附源码

    前言:上学期GIS空间数据库课程设计时,老师让实现Shp-栅格图形文件的读取与显示,外加shp转WKB格式存入oracle,不使用第三方类库,花了一天时间在网上找了一些资料,实现了一个简单的栅格图形文 ...

  3. [c++] Pieces of knowledge

    再系统地学一遍c++,查缺补漏. wchar_t L'a' stored in wchar_t. size of types cout << numeric_limits<doubl ...

  4. 使用webpack打包ThinkPHP的资源文件

    使用webpack打包ThinkPHP的资源文件 利用自己的空余时间一直在维护http://www.wx2share.com这个小网站,全是一个人在弄,由于只租得起虚拟空间,所以后台采用了简单方便的T ...

  5. C/C++定义全局变量/常量几种方法的区别

    在讨论全局变量之前我们先要明白几个基本的概念: 1. 编译单元(模块):    在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ER ...

  6. 队列的存储结构和常见操作(c 语言实现)

    一.队列(queue) 队列和栈一样,在实际程序的算法设计和计算机一些其他分支里,都有很多重要的应用,比如计算机操作系统对进程 or 作业的优先级调度算法,对离散事件的模拟算法,还有计算机主机和外部设 ...

  7. Skeljs – 用于构建响应式网站的前端开发框架

    skelJS 是一个轻量级的前端框架,用于构建响应式站点和应用程序.让设计人员和开发人员可能够使用四个强大的组件:CSS 网格系统,响应式处理程序,CSS 的快捷方式和插件系统. 您可能感兴趣的相关文 ...

  8. springmvc学习笔记--mybatis--使用插件自动生成实体和mapper

    由于表对象在开发过程中会增删字段,有时候需要重新生成实体和对应的mapper,这时候可以通过mybatis的插件的生成. 优点是快速简洁,缺点同样很明显:覆盖.因此,通常是在第一次搭建框架的时候使用, ...

  9. C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面

    个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...

  10. C语言学习010:fopen读写文件

    在文件input.csv文件中,我们有数据如下 Apple Pear Litchis Pineapple Watermelon 现在我们将input.csv文件下的读取并写入到output.csv文件 ...