代码改变世界

随笔分类 -  web---JavaScript

javascript不可变的原始值和可变的对象引用

2013-05-05 02:32 by youxin, 546 阅读, 收藏, 编辑
摘要: 来自:《JavaScript权威指南(原书第6版)》第3章类型、值和变量,(以前也有一篇文章非常好:http://www.cnblogs.com/youxin/archive/2012/08/23/2653292.html javascript数据类型)JavaScript中的原始值(undefined、null、布尔值、数字和字符串)与对象(包括数组和函数)有着根本区别。原始值是不可更改的:任何方法都无法更改(或“突变”)一个原始值。对数字和布尔值来说显然如此——改变数字的值本身就说不通,而对字符串来说就不那么明显了,因为字符串看起来像由字符组成的数组,我们期望可以通过指定索引来修改字符串中 阅读全文

javascript占位符

2013-03-31 19:53 by youxin, 1814 阅读, 收藏, 编辑
摘要: 传统javascript:The text is inserted in the value attribute. On focus, it checks if the value is "search" and returns empty to clear the field. If the value is empty, it returns "search." As you can see, this way is not an efficient way because each field has to be checked.Now with 阅读全文

javascript和Jquery判断是否滚动到底部

2013-03-19 22:11 by youxin, 4214 阅读, 收藏, 编辑
摘要: javascript判断滚动到窗口的底部:window.onscroll=function(){ var sHeight=document.documentElement.scrollTop||document.body.scrollTop;//滚动高度 var wHeight=document.documentElement.clientHeight;//window var dHeight=document.documentElement.offsetHeight;//整个文档高度 if(dHeight-(sHeight+wHeight)<100) { ... 阅读全文

ajax请求地址后加随机数防止浏览器缓存

2013-03-15 13:35 by youxin, 958 阅读, 收藏, 编辑
摘要: 有时候我们利用WebService获取数据的时候,访问它的URL几乎是不变的,但是内容却随着服务器的更新而不同,可是问题是浏览器考虑到性能的原因,对重复的URL操作,如果有缓存,则会将旧的信息返回给浏览器,而不是重新到服务器上去请求信息。解决该问题的一个简单的办法是在URL尾部添加一个随机字符串,最常用的是加上当前日期。比如JS:var url = "www.webservices.com?city=hangzhou&random=" +new Date().getTime();这样每次访问该页面的URL是不同的。浏览器认为是一个新的URL,不会从缓存中返回信息,而 阅读全文

javascript创建css样式

2013-03-13 12:36 by youxin, 787 阅读, 收藏, 编辑
摘要: 1:var style = document.createElement(’link’);style.href = ’style.css’;style.rel = ’stylesheet’;style.type = ‘text/css’;document.getElementsByTagName(’HEAD’).item(0).appendChild(style);2: document.createStyleSheet().cssText = '标签{color:red;' + // 这个注释只在当前JS中帮助理解,并不会写入CSS中 'width:300px;h.. 阅读全文

js和css写在同一个文件里

2013-03-13 11:28 by youxin, 970 阅读, 收藏, 编辑
摘要: Now, if you have by any chance worked on page load optimizations, you would know how costly each resource download is. The more the number of external resources that you refer to, the more the time it takes for the page load to complete.Typically,web pages refer to many external CSS and JS files and 阅读全文

转:Javascript原型链和原型的一个误区

2013-03-09 13:47 by youxin, 302 阅读, 收藏, 编辑
摘要: 之前我对Javascript的原型链中, 原型继承与标识符查找有些迷惑,如, 如下的代码:function Foo() {};var foo = new Foo();Foo.prototype.label = "laruence";alert(foo.label); //output: laruencealert(Foo.label);//output: undefined今天看到了如下这个图:另外, 在Javascript Object Hierarchy看到:The prototype is only used for properties inherited by o 阅读全文

转:javascript闭包详解

2013-03-08 22:18 by youxin, 303 阅读, 收藏, 编辑
摘要: 转: 越来越觉得国内没有教书育人的氛围,为了弄懂JS的闭包,我使出了我英语四级吃奶的劲去google上搜寻着有关闭包的解释,当我看到stackoverflow上这一篇解答,我脑中就出现了一句话:就是这货没跑了! 不才译文见下,见笑了。 越来越觉得国内没有教书育人的氛围,为了弄懂JS的闭包,我使出了我英语四级吃奶的劲去google上搜寻着有关闭包的解释,当我看到stackoverflow上这一篇解答,我脑中就出现了一句话:就是这货没跑了! 不才译文见下,见笑了。 Peter Mortensen问:就像老Albert所说的,“如果你不能向一个六岁的孩子解释清楚,那么其实你自己根本就没弄懂。”... 阅读全文

转:JavaScript预编译与执行顺序的关系

2013-03-08 21:42 by youxin, 249 阅读, 收藏, 编辑
摘要: 首先关于函数的:在Javascript中,function才是Javascript的第一型。当我们写下一段函数时,其实不过是建立了一个function类型的实体。就像我们可以写成这样的形式一样:function Hello() { alert("Hello"); } Hello(); var Hello = function () { alert("Hello"); } Hello();其实都是一样的。但是当我们对其中的函数进行修改时,会发现很奇怪的问题。 <script t... 阅读全文

转:javascript作用域一个经典问题

2013-03-08 21:24 by youxin, 272 阅读, 收藏, 编辑
摘要: 每个写过程序的人都不会对作用域这个概念陌生,那在这篇文章中就来谈下Javascript的作用域。在Javascript,全局环境本身就一个对象。在浏览器宿主中这个对象是window,而当Javascript用于其它非浏览器的宿主,如嵌入式的环境中,可能会是其它的对象。在这里也纠正一个观念,有很多人都认为Javascript只在浏览器中使用,其实Javascript也能在很多非Web情况下使用,据介绍Javascript在一些基于嵌入式的应用领域表现得也很出色,当然这些我也只是听过传说而已。言归正传,当我们写下:var i=1时,其实就是声明了一个window作用域的一个变量。而当我们写下i=1 阅读全文

转:javascript prototype原型链的原理

2013-03-08 21:00 by youxin, 434 阅读, 收藏, 编辑
摘要: 说到prototype,就不得不先说下new的过程。我们先看看这样一段代码: 很简单的一段代码,我们来看看这个new究竟做了什么?我们可以把new的过程拆分成以下三步: var p={}; 也就是说,初始化一个对象p。 p.__proto__=Person.prototype; 2个下划线+proto+2个下划线 Person.call(p);也就是说构造p,也可以称之为初始化p。关键在于第二步,我们来证明一下: 这段代码会返回true。说明我们步骤2的正确。那么__proto__是什么?我们在这里简单地说下。每个对象都会在其内部初始化一个属性,就是__proto__,当我们访问一个对象... 阅读全文

转:javascript 对象和原型

2013-03-08 20:01 by youxin, 233 阅读, 收藏, 编辑
摘要: 下面的代码创建对象:var Person = function (name, age) { this.name = name; this.age = age; this.Introduce = function () { alert("My name is " + name + ".I'm " + age); }; }; var person = new Person("飞林沙", 21); for (var p in person) ... 阅读全文

JS判断是否为数字、JS判断是否为整数、JS判断是否为浮点数

2013-03-07 16:52 by youxin, 413 阅读, 收藏, 编辑
摘要: 最简单的方法:取整后判断是否和原值相等!javascript的取整函数是:parseIntif(parseInt(value)==value){//整数!}正则表达式方法functioncheckRate(input){varre=/^[0-9]+.?[0-9]*$/;//判断字符串是否为数字//判断正整数/^[1-9]+[0-9]*]*$/if(!re.test(input.rate.value)){alert("请输入数字(例:0.02)");input.rate.focus();returnfalse;}}下面为普通函数写法functionBASEisNotNum(t 阅读全文

ie8及以下不支持getElemlentsByClassName

2013-03-06 23:45 by youxin, 323 阅读, 收藏, 编辑
摘要: 在DOM3里已经加入了getElementsByClassName这个方法,然而IE9、10以外的其它版本均不支持,这是一块伤痛啊!目前可以这么解决,判断浏览器支不支持这个方法,如果支持就不管;如果不支持,就在document对象里加入getElementsByClassName这个方法,这样的写法有一个好处,即不管有没有原生函数你都不用去修改代码。网上部分人直接定义一个getElementsByClassName函数,但是这样的话就需要把代码中所有使用document.getElementsByClassName改写成getElementsByClassName。多少有点不方便,也不通用。下 阅读全文

Ie console未定义

2013-03-06 13:19 by youxin, 931 阅读, 收藏, 编辑
摘要: 网页在chrome下没问题,但在ie下报“console 未定义”,后上网查看相关文档,原来console 只支持在firefox,不支持ie,把它注释掉就可以了。 /** *所有浏览器支持的浏览器控制台输出信息的方法 */;(function(){ if(!window.debug){ window.debug = function(message){ try{ if(!window.console){ window.console = {}; window.console.log = function(){ return... 阅读全文

防止网页被嵌套

2013-03-06 12:47 by youxin, 454 阅读, 收藏, 编辑
摘要: 防止被人frame。例:有些网址导航站收录您的网址之后,不会直接跳转到你的网站,而是加载到他的网页中,这样不会给你的网站产生任何IP和PV。如果您不希望这样,那么请加入此段代码。<SCRIPT LANGUAGE=JAVASCRIPT><!–if (top.location != self.location)top.location=self.location;// –></SCRIPT>self即当前页面,等同于window或this;所以self.location就是当前页面的urltop即顶层,可能是window.parent.parent.pa.... 阅读全文

Firefox/Chrome/IE浏览器关于CSS和JavaScript的兼容性

2013-03-05 15:16 by youxin, 377 阅读, 收藏, 编辑
摘要: 1. 在Firefox浏览器中,style.visibility = "visible"无效的问题很多人都遇到过这个问题:style.visibility 设置为 hidden 时有效,visible 却无效。onClick="javascript: ShowLoginFrame()"2. Alpha滤镜的CSS兼容性filter:Alpha(opacity=80);在IE6环境中,可以工作,IE8及更高版本必须使用:-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80) 阅读全文

javascript对URL字符串进行编码/解码方法总结

2013-03-04 11:08 by youxin, 649 阅读, 收藏, 编辑
摘要: 在用javascript对URL字符串进行编码中,虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问题。例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是UTF-8),使用escape()转换传输中文字串就会出现乱码问题。以下是JS下对URL进行编/解码的各种方法:1、escape方法:返回一个可在所有计算机上读取的编码String对象。functionescape(charSt 阅读全文

javascript加号"+"的二义性

2013-03-04 10:50 by youxin, 316 阅读, 收藏, 编辑
摘要: 单个的加号作为运算符在 JavaScript 中有三种作用。它可以表示字符串连接,例如:varstr='hello'+'world!';或表示数字取正值的一元运算符,例如:varn=10; varn2=+n;或表示数值表达式的求和运算,例如:varn=100; varnn2=n+1;三种表示法里,字符串连接与数字求和是容易出现二义性的。因为 JavaScript 中对这两种运算的处理将依赖于数据类型,而无法从运算符上进行判读。我们单独地看一个表达式:aa=a+b;是根本无法知道它真实的含义是在求和,亦或是在做字符串连接。这在 JavaScript 引擎做语法分析 阅读全文

eval()中包含JSON格式的对象字面量时为何要加圆括号?

2013-03-03 23:49 by youxin, 379 阅读, 收藏, 编辑
摘要: 在做AJAX应用开发的时候,对服务器返回的JSON格式字符串,通常这样处理:var jsonData = eval(例如:var jsonStr1 = '{"Name":"Tom","Sex":"Man"}';var jsonObj1 = eval(jsonStr1);alert(jsonObj1.Name);这样会报一个ERROR:invalid labe错误。当我们把JSON格式字符串值用“()”括号括起来就正常了。var jsonStr2 = '{"Name":&q 阅读全文
上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
点击右上角即可分享
微信分享提示