for-in:对象属性遍历
- 循环不仅遍历对象实例属性,还遍历从原型继承来的属性;若只想遍历该对象属性
var prop,obj={a:1.b:2,c:3};
for (prop in obj) {
if (obj.hasOwnProperty(prop)) {
//遍历只属于该对象的属性
}
}
in:判断属性在对象中是否存在
var obj={
cnt:0,
related:null
};
if("cnt" in obj){
//do some code
}
instanceof:判断一个变量是否某个js 对象( 非dom对象)的实例
typeof:判断运算数的类型
- 返回number,boolean,string,function,object,undefined
处理错误
- 自定义错误
function MyError(msg){
this.msg=msg;
}
MyError.prototype = new Error();
- try-catch-finally
基于对象继承:不破坏源对象
var person={
age:11,
name:'virgil'
};
var myPerson=Object.create(person);
myPerson.age=12;
console.log(myPerson.age,person.age);//12 11
基于类型继承
function Person(name){
this.name;
}
function Author(name){
Person.call(this,name); //继承构造器
}
Author.prototype = new Person(); //原型继承
禁止修改
- preventExtension #防止扩展
- seal #密封
- freeze #冻结
引用
Array非固定长度,可以动态增删,因此数组是引用类型
var arr=[1,2,3]; var arrRef=arr; arr.push(4); console.log(arrRef);
作用域链
- 全局作用域中,该链中有且只有一个对象,即全局对象
- 函数中,有两个对象,先会被访问到的是调用对象,然后是全局对象
《JavaScript核心概念及实践》
如有疑问,请文末留言交流或邮件:newbvirgil@gmail.com 本文链接 : https://newbmiao.github.io/2015/03/28/maintainable-javascript-note.html