Kingle
你所有不曾料想过的问题,都会随着时间的推移而与你不期而遇

随笔分类 -  Javascript

Javascript 补位运算符
摘要:看到一个题目~~3.14得到是3,一下子有点蒙,之前在Javascript中完全没有见过~这个运算符。经查才知道~是补位运算符,但是跟原码反码补码又有点不同(在反码这一块,不记正负),好吧,大学的东西都还给老师了。举个简单点的例子吧。~2 = -3,看看怎么得出这个结果的:2的二进制是:0000 0... 阅读全文
posted @ 2014-05-07 22:42 Kingle 编辑
前端代码优化: 使用YUI Compressor
摘要:通过压缩组件,可以显著减少HTTP请求和响应事件。这也是减小页面大小最简单的技术,但也是效果最明显的。压缩JS,CSS代码有几种常用插件,YUI Compressor是个不错的选择。通过maven的YUI Compressor plugin可以方便的压缩项目中的前端代码。最简单便是将所有的文件一一压缩,看下pom.xml的配置: 4.0.0 KUI_demo KUI_demo 1.0 jar net.alchim31.maven yuic... 阅读全文
posted @ 2014-01-24 22:37 Kingle 编辑
Javascript 模块模式
摘要:模块模式(Module Pattern)提供了一种代码封装的方式,可以优雅地创建非耦合的代码块。它是利用即时函数为对象创建私有变量和特权方法。严格来说,Javascript中没有私有成员的概念,所有的对象属性都是公有的。不过,任何在函数中定义的变量,都可以认为是私有变量,因为不能在函数的外部访问这些变量。而特权方法作为闭包有权访问在函数中定义的所有变量和函数。模块模式是多个概念的结合,包括:闭包命名空间即时函数私有变量和特权方法模块模式的语法大概如下: KUI.utils.namespace("KUI.module.module1"); KUI.module.module1 阅读全文
posted @ 2013-12-05 21:38 Kingle 编辑
Javascript delete 引用类型对象
摘要:很少使用javascript的delete,最近因为一个小bug发现删除引用类型对象的时候有一点不同。如下面例子: var testVar = { a : { test : 1 } }, test1 = {}, test2 = {}; test1.a = testVar.a; test2.a = testVar.a;/* delete test1.a; console.log(test... 阅读全文
posted @ 2013-09-28 20:15 Kingle 编辑
javascript代码复用--继承
摘要:由于javascript没有类的概念,因此无法通过接口继承,只能通过实现继承。实现继承是继承实际的方法,javascript中主要是依靠原型链要实现。原型链继承原型链继承是基本的继承模式,其本质是重写原型对象,使其为新对象的实例。代码实现如下:function Person(){ this.name = "default"; var temp = "temp";}Person.prototype.age=0;Person.prototype.getName = function(){ return this.name;}Person.prototype. 阅读全文
posted @ 2013-07-03 08:01 Kingle 编辑
javascript面向对象--自定义类型
摘要:Javascript是基于原型实现面向对象的,因此并没有类和接口,它的对象也与其他基于类的语言中的对象有所不同。在Javascript中,每个对象都是基于一个引用类型创建的,这个引用类型可以是原生类型,也可以是自定义的类型。在没有类的情况下,可以采用下列模式创建对象。简单模式创建对象最简单的方式就是创建一个引用类型的实例,再为其添加属性和方法:var Person = new Object();Person.name = "Thom";Person.action = function(){};但是这样使用同一个接口创建很多对象,会产生大量的重复代码,不利于封装。工厂模式工厂 阅读全文
posted @ 2013-06-24 08:05 Kingle 编辑
jQuery $.isNumeric vs. $.isNaN vs. isNaN
摘要:在jQuery中,有几种方式可以判断一个对象是否是数字,或者可否转换为数字。 首先,jQuery.isNaN()在最新版本中已经被移除了(1.7之后),取而代之的是 jQuery.isNumeric ()。这并不奇怪,因为jQuery.isNaN() 同Javascript内置的isNaN()名字相同,但是语义却不完全相同,在一定意义上会造成歧义。 jQuery.isNumeric ()有着与其相似的功能,同时也解决了歧义问题。 jQuery.isNumeric ()检查传进的参数是否是数字或者可否转换为数字;Javascript 内置的isNaN() 检查传进的参数是否是一个合法的数字... 阅读全文
posted @ 2013-04-15 08:23 Kingle 编辑
Javascript 声明时用“var”跟不用"var"的区别
摘要:Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有问题,但是这两种方式还是有区别的。可以正常运行的代码并不代表是合适的代码。var num = 1;是在当前域中声明变量. 如果在方法中声明,则为局部变量(local variable);如果是在全局域中声明,则为全局变量。而 num = 1;事实上是对属性赋值操作。首先,它会尝试在当前作用域链(如在方法中声明,则当前作用域链代表全局作用域和方法局部作用域etc。。。)中解析 num; 如果在任何当前作用域链中找到num,则会执行对num属性赋值; 如果没有找到num,它才会在全局对象(即当前作用域.. 阅读全文
posted @ 2013-04-08 08:05 Kingle 编辑
jQuery json空对象筛选替换
摘要:Requirement: 一个json object,并且可能包含一些空值或者空字符串,在页面显示的时候希望遇到空值显示“N/A”,但是有一部分值是允许空值的。因此希望通过筛选将空值设为“N/A”.例如希望学生的“age”和“score”如果为空显示“N/A”,而“sex”或者“comment”为空则不做处理。var student = { "name" : "Guo", "sex" : "", "age" : "", "num ": 01, " 阅读全文
posted @ 2013-04-05 21:06 Kingle 编辑
jQuery object and DOM element
摘要:源起: <div id="test1"> <span>text1</span> <span>text2</span> <span>text3</span> </div> 想取得span element 里面的文本, 发现$("#test1 span")[0]取出来的不是jQuery object, 只能用$($("#test1 span")[0]).text()转为jQuery再取了,但是两个$一起总感觉怪怪的,退而求其次便用了取值$(&q 阅读全文
posted @ 2013-04-04 10:07 Kingle 编辑