使用typeof bar === “object”检测”bar”是否为对象有什么缺点?如何避免? 这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的,null 的结果也是 object,Array 的结果也是 object,有时候我们需要的是 “纯粹” 的 object 对象。如何避免呢?比较好的方式是: console.log(Object.prototype.t…
有3个函数可以把非数值转换为数值:Number(),paresInt(),parseFloat(); Number()可以用于任何数据类型, paresInt(),parseFloat()专门用于把字符串转换成数值 Number()函数的转换规则 如果是布尔值,true,false分别转换为1,0 如果是数字值,只是简单的传入和返回。 如果是null值,返回0. 如果是undefined,返回Na…
var age=29; function sayAge(){ console.log(this.age);//console.log: } alert(sayAge());//console.log:弹出undefined 控制台输出29 console.log(sayAge());//console.log:控制台输出29,unedfined sayAge();//弹出29,控制台…
一、为什么JavaScript是单线程? JavaScript语言的一大特点就是单线程,也就是说,同一个时间只能做一件事。那么,为什么JavaScript不能有多个线程呢?这样能提高效率啊。 JavaScript的单线程,与它的用途有关。作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定JavaScript…
if()中的判断条件其实是转换成Boolean类型对Boolean类型的判断 String类型 var a=”test”; if(a){ alert(“yes”); } else{ alert(“no”); } //yes var a=”12″; //字符串类型 if(a){ alert(“yes”); } else{ alert(“no”); } //y…
function specialArray(){ //创建数组 var values=new Array(); //添加值 values.push.apply(values,arguments); //values.push(arguments); //添加方法 values.toPipedstring=function(){ return this.join(“|”); } //返回数组 ret…
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。 HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提…
1.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:”严格模式”(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。 2.为什么用严格模式 – 消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为; – 消除代码运行的一些不安全之处,保证代码运行的安全; – 提高编译器效率,增加运行速度; – 为未来新版…
二分查找 // 非递归算法 function binary_search(arr, key) { var low = 0, high = arr.length – 1; while(low <= high){ var mid = parseInt((high + low) / 2); if(key == arr[mid]){ return mid; }else if(key > arr…
原型对象的问题 1>.它省略了构造函数传递初始化参数这一环节,结果所有实例默认情况下都将取得相同的属性值。 2>.原型模式的最大问题是由其共享的本性所导致的。 原型中所有属性是被很多实例所共享的,这种共享对于函数非常合适,对于那些包含基本值的属性倒也说的过去,通过在实例上添加一个同名属性,可以隐藏原型中的对应属性。然而对于包含引用类型值的属性来说,问题就比较突出了。 function …