js笔记一
因为很少使用js。总是忘记一些知识点,故做记录,错漏之处希望大家指出,谢谢。
1.
ECMAScript规范给所有函数都定义了Call()与apply()两个方法,call与apply的第一个参数
都是需要调用的函数对象,在函数体内这个参数就是this的值,剩余的参数是需要传递给函数
的值,call与apply的不同就是call传的值可以是任意的,而apply传的剩余值必须为数组。
function Animal(){
this.name = "Animal";
this.showName = function(){
alert(this.name);
}
}
function Cat(){
this.name = "Cat";
}
var animal = new Animal();
var cat = new Cat();
//通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。
//输入结果为"Cat"
animal.showName.call(cat,",");
//animal.showName.apply(cat,[]);
2.
function A(){return this;}
var t=new A();
t.__proto__===A.prototype // true
3.
获取一个对象的属性值时,如果对象上不存在自由属性(本身的,并非原型链上的),则沿着
其原型链查找。
查找失败则为undefined。
设置一个对象的属性值时,不会查找原型链。
4.
异常处理和其他语言基本一致
try{
//代码块
}catch(e){
// 错误处理代码块
}
5.
数据类型:字符串、数字、布尔、数组、对象、Null、Undefined
Null与Undefined的区别:
Undefined类型只有一个值,即undefined, 声明未赋值的都为undefined
null用来表示尚未存在的对象。null即是一个不存在的对象的占位符
typeof null
//"object" 其实这是JavaScript最初实现的一个错误,后来被ECMAScript
沿用下来。
6.
Object.create(proto, [ propertiesObject ])
// 第一个参数为创建对象的原型。第二个参数为属性配置。
7.
== 与 ===的区别
1、对于string,number等基础类型,==和===是有区别的
a.不同类型间比较,==之比较“转化成同一类型后的值”看“值”是否相等,===如果类型不
同,其结果就是不等
b.同类型比较,直接进行“值”比较,两者结果一样
2、对于Array,Object等高级类型,==和===是没有区别的
进行“指针地址”比较
3、基础类型与高级类型,==和===是有区别的
a.对于==,将高级转化为基础类型,进行“值”比较
b.因为类型不同,===结果为false
总结:==会进行类型转化后比较。 === 不会进行类型转化,类型不同自然返回false。
8.
&& 与||
采用短路原则。只是返回值和其他语言不同。返回的是运算符连接的执行的最后一个表达式的
值。