0.js 中 **Math.ceil()、Math.floor()和Maht.round()**之间的使用区别,
**Math.ceil()**执行向上舍入,即它总是将数值向上舍入为最接近的整数。
**Math.floor()**执行向下舍入,即它总是将数值向下舍入为最接近的整数。
**Math.round()**执行标准舍入,即它总是将数值四舍五入为最接近的整数。
1.clientHeight、clientWidth这两个属性指元素的内容部分再加上padding的所占据的视觉面积,不包括border和滚动条占用的空间。
2.scrollHeight、scrollWidth指包含滚动条在内的该元素的视觉面积。
3.offsetLeft、offsetTop表示该元素的左上角与父容器**(offsetParent对象)**左上角的距离。
4.getBoundingClientRect()方法,它返回一个对象,其中包含了left、right、top、bottom四个属性,分别对应了该元素的左上角和右下角相对于浏览器窗口**(viewport)**左上角的距离。
【 IE、Firefox 3.0+、Opera 9.5+都支持该方法,而Firefox 2.x、Safari、Chrome、Konqueror不支持。】
5.栈存取数据的方式:先进后出,后进先出;堆存取数据的方式:不按照顺序存取,自由选择所需的字段。http://blog.csdn.net/pingfan592/article/details/55189622
【变量为基本数据类型时,进行新的变量的复制操作后,对新的变量分配位置,并且复制对应的值,当改变新的变量的值时,原来的变量的值不受影响。】
【变量为引用数据类型时,例如数组,进行新的变量的复制操作后,同样对新的变量分配位置,并且复制对应的值,当新的变量的值改变时,原来的变量的值同样被改变,因为新的值只是引用类型的地址指针。】
6.封装:
所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量。对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例对象上。
比如,猫的原型对象现在可以这样写:
function Cat(name,color){
this.name=name;
this.color=color;
}
我们现在就可以生成实例对象了。
var cat1 = new Cat("大毛","黄色");
var cat2 = new Cat("二毛","黑色");
alert(cat1.name); // 大毛
alert(cat1.color); // 黄色
这时cat1和cat2会自动含有一个constructor属性,指向它们的构造函数。
alert(cat1.constructor == Cat); //true
alert(cat2.constructor == Cat); //true
Javascript还提供了一个instanceof运算符,验证原型对象与实例对象之间的关系。
alert(cat1 instanceof Cat); //true
alert(cat2 instanceof Cat); //true
每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。
这意味着,我们可以把那些不变的属性和方法,直接定义在prototype对象上。
function Cat(name,color){
this.name = name;
this.color = color;
}
Cat.prototype.type = "猫科动物";
Cat.prototype.eat = function(){alert("吃老鼠")};
然后,生成实例。
var cat1 = new Cat("大毛","黄色");
var cat2 = new Cat("二毛","黑色");
alert(cat1.type); // 猫科动物
cat1.eat(); // 吃老鼠
7.构造函数的继承
(1)使用call或apply,直接在子对象的构造函数中添加
function Cat(name,color){
Animal.apply(this, arguments);
this.name = name;
this.color = color;
}
(2)使用prototype,子对象的prototype指向父对象
Cat.prototype = new Animal(); //它相当于完全删除了prototype 对象原先的值,然后赋予一个新值
Cat.prototype.constructor = Cat; //任何一个prototype对象都有一个constructor属性,指向它的构造函数。
如果没有**"Cat.prototype = new mal();"这一行,Cat.prototype.constructor是指向Cat的;加了这一行以后,Cat.prototype.constructor指向Animal**
8.快速排序 http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html
第一步,选择中间的元素45作为"基准"。(基准值可以任意选择,但是选择中间的值比较容易理解。)
第二步,按照顺序,将每个元素与"基准"进行比较,形成两个子集,一个"小于45",另一个"大于等于45"。
第三步,对两个子集不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
var quickSort = function(arr){
if(arr.length <= 1){return arr;}
var pivotIndex = Math.floor(arr.length / 2);
var pivot = arr.splice(pivotIndex, 1)[0];
var left = [];
var right = [];
for(var i = 0; i < = arr.length; i++){
if(a[i] < pivot){
left.push(a[i])
}else{
right.push(a[i])
}
}
return quickSoft(left).concat([pivot], quickSoft(right));
}
9.jQuery的笔记 http://www.ruanyifeng.com/blog/2011/07/jquery_fundamentals.html