赞
踩
@[TOC]JavaScript进阶学习笔记
ECMAScript -语法规范
BOM
DOM
JS运行分为两个阶段:
原有的构造函数,每构造一个新的对象,浏览器都会指定一块新的物理内存的物理地址给该对象。
原型模式:我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。
好处:可以让所有对象实例共享它所包含的属性和方法。
换句话说,不必在构造函数中定义对象实例的信息,而是将这些信息直接添加到原型对象中。
function Person(){
}
Person.prototype.name="Nich";
Person.prototype.age=18;
Person.prototype.sayName = function(){
alert(this.name);
};
var p1 = new Person();
p1.sayName(); //"Nich"
var p2 = new Person();
p2.sayName(); //"Nich"
alert(p1.age == p2.age); //true,说明指向的物理地址是一致的。其中,__proto__等同于prototype。
function Person(name, age){
this.name=name;
this.age=age;
}
Person.prototype.sayName = function(){
console.log("大家好,我是" + this.name);
}
var p1 = new Person('Nich','18');
var p2 = new Person('ykb','68');
p1.sayName(); //"大家好,我是Nich"
console.dir(p1); //dir输出对象p1
注意:当构造函数存在一个与原型函数同名的函数时,会优先显示构造函数里的函数。
即,当调用对象的属性或者方法时,先去找对象本身的属性和方法,如果对象没有该属性或方法,此时再去调用原型中的属性或者方法;如果两者都找不到,报错。
在原型对象中有一个属性 constructor 构造函数
其作用:记录了创建该对象的构造函数。
许多语言都支持两种继承:接口继承和实现继承。
接口继承只继承方法签名,而实现继承则继承实际的方法。如前所述,由于函数没有签名,在ECMAScript中无法实现接口继承,故ECMAScript只支持实现继承,而且其实现继承主要是依靠原型链来实现的。
基本思想:利用原型让一个引用类型继承另一个引用类型的属性和方法。
回顾一下构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。
闭包是指有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式,就是在一个函数内部创建另一个函数。
DOM(文档对象模型)是针对HTML和XML文档的一个API。DOM描绘了一个层次化的结点树,允许开发人员添加、移除和修改页面的某一部分。
JavaScript和HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。
Web浏览器中可能发生的事件有很多类型。不同的事件类型具有不同的信息,而“DOM3级事件”规定了以下几类事件。
影响页面整体运行性能的原因是多方面的。首先,每个函数都是对象,都会占用内存;内存中的对象越多,性能就越差。其次,必须从事先指定所有事件处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间。事实上,从如何处理好事件处理程序的角度出发,还是有一些方法能够提升性能的。
对“事件处理程序过多“问题的解决方案就是事件委托。事件委托利用了事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。例如,click事件会一直冒泡到document层次。也就是说,我们可以为整个页面指定一个onclick事件处理程序,而不必给每个单击的元素分别添加事件处理程序:
<ul id = "myLinks">
<li id = "goSomewhere">Go Somewhere</li>
<li id = "doSomething">Do Something</li>
<li id = "sayHi">Say hi</li>
</ul>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。