<script type="text/javascript">
//"this关键字引用的是 包含它的那个函数 作为某个对象的方法 被调用时所属的那个对象",即:调用函数的那个对象。
//this会根据周围的环境改变而改变
//例1
function myOrneryBeast(look){
console.log(this);
//this.style.color='green';//this指代的是window对象,window对象没有style属性,所以运行时,这句话报错
}
//this的环境可以随着函数被赋值给不同的对象而改变
window.onload=function(){
myOrneryBeast();//this指代的是window对象,this关键字引用的是 包含它的那个函数(myOrneryBeast) 作为某个对象的方法(我们默认没有注明的函数全是在window对象下的) 被调用时所属的那个对象(myOrneryBeast):即调用myOrneryBeast()这个函数的是window对象,myOrneryBeast()是作为window的方法来看待
document.getElementById("p").onclick=myOrneryBeast;//点击页面中的p标签后,this指向变化,代表<p id="p">pp</p>,调用myOrneryBeast()的是p
}
//例2
//属性继承的方式是调用父类的构造函数call
function Creatperson(name,age){//父类
this.name=name;
this.age=age;
console.log(this);
}
var p1=new Creatperson("小名","20");
//在this中有个高级应,可以通过call()和apply()方法,自主修改this的环境指向,
function CreatStar(name,age,job){//子类
//Creatperson(name,age);//函数前没有调用的东西,所以this是window ,这句话目的是子类对父类中name和age属性的继承,但结果是window添加了name,age两个属性;
Creatperson.call(this,name,age);//this指向当前对象CreatStar,CreatStar调用Creatperson中的name和age,实现子类CreatStar继承父类Creatperson的属性;
this.job=job;
}
var newp1=new CreatStar();
</script>
<body>
<p id="p">pp</p>
</body>
http://www.cnblogs.com/caichongdd/archive/2012/09/04/2670136.html
浙公网安备 33010602011771号