//原型链只是 链接
function ClassA (sName,sColor){
this.name = sName;
this.color = sColor;
}
ClassA.prototype.name = "Car";
ClassA.prototype.sayName = function(){
alert(this.name);
}
var obj = new ClassA("Car","red");
obj.name ="Clothes";
obj.sayName();//Colothes
delete obj.name;
obj.sayName();//Car
//=======================================================
//this
//全局this
alert(this === window);//true
alert(window.alert === this.alert);//true
alert(this.parseInt(035,10))l//29
//this是运行时决定的,而不是函数定义的
function sayColor(){//定义一个全局函数,相当于window.sayColor();
alert(this.color);
}
var color = "red";//定义一个全局变量,相当于window.color = "red";
//sayColor();//等价于window.sayColor();输出red
var Car = {//自定义对象
color:"blue"//注意语法符号
}
sayColor.apply(this);//等价于window.sayColor();输出red
sayColor.apply(Car);//sayColor中的this===Car;输出blue
//=======================================================
//函数也是对象
//定义一个全局函数
function sayColor(){
if (this === window){
alert ("this is window");
}
}
sayColor();//this is window
//将sayColor函数的一个color属性定义为函数
sayColor.color = function(){
if (this === window ){
alert("this is window");
}else if (this === sayColor){
alert("this is sayColor");
}else if (this === sayName){
alert("this is sayName");
}
}
sayColor.color();//this is sayColor
//定义一个新对象用来传递给它
var sayName = new Object;
sayColor.color.apply(sayName);//this is sayName
//=======================================================
//prototype
//在Array的原型中添加min方法
Array.prototype.min = function(){
var min = this[0];
for (var i = 1;i < this.length; i++){
if (this[i] < min){
min = this[i];
}
}
return min;
};
//alert([52,62,2,3,88,99,6].min());//输出2
//但是,神奇的瞬间发生了
var aValue = [];
for (var i in aValue){
alert(i);//输出min,for-in中把min方法循环了出来!用hasOwnProperty解决该问题
//if (aValue.hasOwnProperty(i)){//判断是否为aValue中的成员
// alert(i);
// }
}
//=======================================================
//contructor
//contructor始终指向创建当前对象的函数
var arr = [5545,22,553];
var fnTest= function (){};
var oTest = {};//等价于new Object();
alert(arr.constructor === Array);//true
alert(fnTest.constructor === Function);//true
alert(oTest.constructor === Object);//true
//自定义函数
function Car(sColor){
this.color = sColor;
}
Car.prototype.sayColor = function(){
alert(this.color);
}
var obj = new Car("red");
//alert(obj.constructor === Car);//true
//alert(Car.prototype.constructor === Car);//true
//alert(obj.constructor.prototype.constructor === Car);//true
//但是!
function Car(sColor){
this.color = sColor;
}
Car.prototype = { //这里被对象覆盖了
sayColor:function (){
alert(this.color);
}
}
var obj = new Car("red");
alert(obj.constructor === Car);//false
alert(Car.prototype.constructor === Car);//false
alert(obj.constructor.prototype.constructor === Car);//false
//alert(obj.constructor === Object);//true
//alert(Car.prototype.constructor === Object);//true
//alert(obj.constructor.prototype.constructor === Object);//true
//解决方法重新覆盖,这样Car.prototype.constructor === Car
Archive for the Category ◊ JavaScript ◊
折腾了一天,撞鬼。想在商品列表中点击购买后弹出提示框,根据document.body.scrollTop设置显示位置,可偏偏失效。
原因:当网站做了以下声明时(<!–CTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dt–>),声明后document.body.scrollTop的值永远等于0,解决办法是只需把document.body用document.documentElement替换即可。
——————————————————————————————————
附:javascript中关于top、clientTop、scrollTop、offsetTop等

网页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth;
这东西真厉害,我想网页木马应该是先将木马程序缓存到临时文件夹然后来一个shell。本地测试了下OK,到这里貌似不行,挂着先了
(说明:这只是提供一种思路,不过能不能运行还要看IE的安全设置。)
提示:你可以先修改部分代码再运行。
