javascript细节
- 当文档结构发生修改会触发MutationEvents模块的Mutation事件,对html编辑器很有用;
- 事件模块,事件类型:
模块名 | 事件借口 | 事件类型 |
HTMLEvents | Event | abort,blur,change,erro,focus,load,reset,resize,scroll,select,submit,unload |
MouseEvents | MouseEvent | click,mousedown,mousemove,mouseout,mouseover,mouseup |
UIEvents | UIEvent | DOMActive,DOMFocusIn,DOMFocusOut |
- 构造函数使用自己的参数来初始化this关键字所引用的对象的属性
- 构造函数命名规范一般为了与普通函数区分,构造函数首字母大写
- 构造函数通常没有返回值,他们初始化作为this的值来传递对象,并且没有返回值。然而,一个构造函数可以有返回值,并且,如果这么做,返回的对象成为new 表达式的值。在此情况下作为this的值的对象会被抛弃
- 原型对象的任何属性,表现为以它为原型的对象的属性 = JavaScript对象从它的原型那里继承属性
- var obj = new Object(),new 设置了这个对象的原型。一个对象的原型就是它的构造函数的的prototype属性的值,所有的函数都有一个prototype属性,函数一旦被定义,prototype属性自动创建和初始化,它的初始化值是一个对象,此对象只有一个contructor属性,原型对象的属性表现在以它为原型的对象上面,所以所有的对象都有一个contructor属性
- 构造函数初始化的每个对象都确实从原型那里继承了完全相同的一组属性,这意味着,原型对象是放置方法和其他不变属性的理想地方。
例如:
function Book(w,h){this.width=w; this.height=h; }
Book.prototype.area = function(){return this.width*this.height;}
- 继承作为查找一个属性值的过程的一部分自动发生
- 继承的属性就好像对象的常规属性一样发挥作用可以用for/in来枚举他们,并在in运算符中测试它们
例如:
var b = new Book(2,4);
b.hasOwnProperty("width");//true,常规属性
b.hasOwnProperty("area");//false, hasOwnProperty检测是否常规属性,true为 yes
"area" in b; //true,继承属性
"width" in b; //true,继承属性, in 检查所有属性
- 创建自己的类模拟库
var Class = function(){
var klass = function(){
this.init.apply(this, arguments);
};
klass.prototype.init = function(){
this.width = 0;
this.height=1;
};
return klass;
};
var Person = new Class;
Person.prototype.init=function(){
}
// 用法:
var person = new Person;
alert(person.width);//person.width=undefind,因为Person自定义了初始化init方法,覆盖了默认定义的,所以不是0
念念不忘必有回响,每天努力多一点,终有一天你会感谢曾经努力的自己