我所知道的Javascript
javascript到了今天,已经不再是我10多年前所认识的小脚本了。最近我也开始用javascript编写复杂的应用,所以觉得有必要将自己的javascript知识梳理一下。同大家一起分享javascript给我们带来的福利。
索引
工具
Online Javascript interpreter[在线javascript解析器]
可以在线运行javascript代码。这篇文章中的所有代码都在里面运行过。用它来做javascript实验,它是不错的选择。
运行地址:http://math.chapman.edu/~jipsen/js/
Html5 在线运行
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
如果要跨域调用,那么要使用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://learn.jquery.com/plugins
学习组织代码:http://learn.jquery.com/code-organization/concepts/
JQuery UI
基于JQuery的UI库,里面的拖动,排序等效果足以胜任绝大部分界面的操作要求。
补充一下。如果你是在移动设备上使用JQuery UI的sortable功能,那你还得引用https://github.com/furf/jquery-ui-touch-punch。注意设置sortable的handle属性,即让其拖动区域限制在一个范围内,否则,如果排序项超过了满屏,那么整个屏幕将不能被上下滑动。
JQuery Mobile
JQuery 的移动开发框架
在移动设备开发上,最好使用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的更多相关文章
- 我所知道的JavaScript中判断数据类型
相信一提到怎么判断js的数据类型,大家都会想到的是typeof.instanceof,那么为什么有了typeof的存在还要有instanceof? typeof? 根据MDN:typeof操作符返回一 ...
- 《jQuery风暴》第2章 必须知道的JavaScript知识
第2章 必须知道的JavaScript知识 JavaScript是jQuery应用的基础,掌握JavaScript这门语言是使用jQuery的基础条件.本章不会全面细致的讲解JavaScript的全部 ...
- 那些必须要知道的Javascript
原文:那些必须要知道的Javascript JavaScript是前端必备,而这其中的精髓也太多太多,最近在温习的时候发现有些东西比较容易忽略,这里记录一下,一方面是希望自己在平时应用的时候能够得心应 ...
- 从零开始学习jQuery(剧场版) 你必须知道的javascript
原文:从零开始学习jQuery(剧场版) 你必须知道的javascript 一.摘要 本文是jQuery系列教程的剧场版, 即和jQuery这条主线无关, 主要介绍大家平时会忽略的一些javascri ...
- js值----你所不知道的JavaScript系列(6)
1.数组 在 JavaScript 中,数组可以容纳任何类型的值,可以是字符串.数字.对象(object),甚至是其他数组(多维数组就是通过这种方式来实现的) .----<你所不知道的JavaS ...
- js类型----你所不知道的JavaScript系列(5)
ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型等. 1.内置类型 JavaScript 有七种内置类型: • 空值(null) • 未定义( ...
- 闭包----你所不知道的JavaScript系列(4)
一.闭包是什么? · 闭包就是可以使得函数外部的对象能够获取函数内部的信息. · 闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. · 闭包就 ...
- let和const----你所不知道的JavaScript系列(2)
let 众所周知,在ES6之前,声明变量的关键字就只有var.var 声明变量要么是全局的,要么是函数级的,而无法是块级的. var a=1; console.log(a); console.log( ...
- LHS 和 RHS----你所不知道的JavaScript系列(1)
变量的赋值操作会执行两个动作, 首先编译器会在当前作用域中声明一个变量(如果之前没有声明过), 然后在运行时引擎会在作用域中查找该变量, 如果能够找到就会对它赋值.----<你所不知道的Ja ...
随机推荐
- 让我们一起写出更有效的CSharp代码吧,少年们!
周末空闲,选读了一下一本很不错的C#语言使用的书,特此记载下便于对项目代码进行重构和优化时查看. Standing On Shoulders of Giants,附上思维导图,其中标记的颜色越深表示在 ...
- Cocos2d-x 3.2 学习笔记(九)EventDispatcher事件分发机制
EventDispatcher事件分发机制先创建事件,注册到事件管理中心_eventDispatcher,通过发布事件得到响应进行回调,完成事件流. 有五种不同的事件机制:EventListenerT ...
- 邻接表无向图(一)之 C语言详解
本章介绍邻接表无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实现 ...
- web前端学习笔记(CSS盒子的浮动)
在标准流中,一个块级元素在水平方向会自动伸展,直到包含它的元素的边界:而在竖直方向和兄弟元素依次排列,不能并排.使用“浮动”方式后,块级元素的表现就会有所不同. CSS中有一个float属性 ...
- Trie树的应用:查询IP地址的ISP
1. 问题描述 给定一个IP地址,如何查询其所属的ISP,如:中国移动(ChinaMobile),中国电信(ChinaTelecom),中国铁通(ChinaTietong)?现有ISP的IP地址区段可 ...
- bash魔法堂:History用法详解
Brief 又要敲那条长到没朋友的命令了,真心不再爱了... 有了history这条命令我想大家可以再爱一次了吧! >history 语法: history [n | -c | -raw his ...
- linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本
红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...
- 给swift程序猿留下深刻印象的10个Swift代码
通过使用单行代码完成同样的 10 个练习,我们来看看 Swift 和其他语言之间的较量. 将数组中每个元素的值乘以 2 使用map来实现 var arr = [1,2,3,4]; var newArr ...
- Javascript对象创建
一.概述 虽然对象字面量可以用来创建对象,但在创建多个类似的对象时,不够优雅,不符合DRY原则. 二.创建对象 有以下几种模式: 1.工厂模式 2.构造函数模式 3.原型模式 4.组合构造函数和原型模 ...
- C#抽象类
抽象类使用abstract修饰符声明: 不能创建抽象类的实例: 抽象类只能用作其他类的基类: 抽象类中可以包含抽象成员和普通的非抽象成员: 抽象类自己可以派生自另外一个抽象类: 任何派生自抽象类的[类 ...