笔记(乱)

1、

var a=+'86';
console.log(a);//输出86,+会把字符串转化为数字或者NaN
var a=+'2R';

console.log(a);
//如果引号内不全是数字就转化为NaN

2、运算符优先级

算术运算符最高
关系运算符次之
逻辑运算符次之
例如:9>3+4&&7
先算3+4 再判断9是不是大于7,再&&

3、短路逻辑

//短路逻辑

var a=42&&5142;
a;//第一个条件不为0(满足),则输出第二个条件的值

var a=0&&5142;
a;//第一个条件为0(不满足),则输出第一个条件的值,第二个条件不理会

 

 4、声明时无定义则转为默认值写法

 1 function Address(stress,xno){         //构造器函数首字母默认大写
 2    this.stress=stress||"Huang Quan Road";
 3    this.xno=xno||135;
 4    this.toString=function(){
 5            return "stress:"+this.street+",No:"+this.xno;
 7      }   
 9 }
11 /*
12 如果传入参数并没有street和xno,则使用默认值Huang Quan Road和135
13 */

5、call()和apply()函数

call和apply通常用来修改函数的上下文,函数中的this指针将被替换为call或者apply的第一个参数,不同的是,apply的第二个参数为一个函数需要的参数

组成的一个数组,而call则需要跟若干个参数,参数之间以逗号","隔开。

 

6、new的本质:使用new操作符来作用于一个函数,实质上发生如下动作:首先,创建一个空对象,然后用apply方法,将这个空对象传入作为apply的第一个参数

以及上下文参数,这样函数内部的this将会被这个空的对象所替代。

1 var triangle=new Shape("striangle");
2 
3 // 调用构造器Shape(),实际上等价于如下
4 
5 var triangle={};
6 Shape.apply(striangle,["triangle"]);
7 
8 //上行中第一个striangle,为空对象,第二个"striangle"为传入Shape的参数

 

 7、JavaScript预包装的9个原生对象构造函数如下:Number().  String()   Boolean()   Object()   Array()   Function()   Date()   RegExp()   Error()   

 以上九种原生构造函数返回值中,除了Function()和RexExp()的返回值类型为function外,其他都是object

8、实例化对象的__proto__属性不一定被所有浏览器兼容,如对某一个实例化对象var myJob=new object;

    其原型myJob.__proto__===myJob.constructor.prototype(只能写成后者,前者可能不被识别)

9、将对象b的原型指向一个新的对象a(b继承之a,a是b的原型),可以采用如下写法:

1 b.prototype=new a("tom");
2 // 假设对象a有一个参数
3 
4 //也可以写成如下等式
5 var c=new a("tom");
6 b.prototype=c;

 

 10、JavaScript中比较两个数组相等
直接比较数组相等,实际上是比较数组的内存地址是否相等,所以,直接用==和===比较两个数字,最后都会返回false;

var a=new Array("1");b=new Array("1");console.log(a==b);

false 
undefined

var a=new Array("1");b=new Array("1");console.log(a===b);

false 
undefined

事实上,要判断两个数组是否相等,只能将数组现转化为字符串,再比较字符串是否相等,需要调用toString()方法:

var a=new Array("1","2"),
b=new Array("1","2");
console.log(a.toString()===b.toString());

true 
var a=new Array("1","2"),
b=new Array("1","2");console.log(a.toString()==="1,2");

true 

更严格来说,如果两个数组中元素相同,但顺序不同,则需要先对数组进行排序,再对排序完成的数组进行比较:arr.sort().toString();

var a=new Array("1","2","tt"),b=new Array("1","tt","2");
console.log(a.toString()===b.toString());

false 
undefined

var a=new Array("1","2","tt"),b=new Array("1","tt","2");
console.log(a.sort().toString()===b.sort().toString());

true 
undefined

 

 

 

 

 

 

 

 

 

 



posted on 2015-12-05 19:08  东渐  阅读(146)  评论(0编辑  收藏  举报

导航