在js中,this表示当前对象,
“谁”调用了当前函数,“this”就指向了“谁”
1.之前,创建的对象中的属性是动态添加的,如果我们想在创建对象的同时,自动拥有某些属性或方法,该如何实现?
我们的习惯:在相同的类下创建的对象需要有相同的属性和方法
语法:
Function 类(){
this.属性=值;
}
示例1:
function Person(){
this.name = 'zhangsan';
this.age = 30;
}
var p1 = new Person();
var p2 = new Person();
alert(p1.name+p1.age);
alert(p2.name+p2.age);
创建的这两个对象,它们的属性是一样的,但值也是相同的
示例2:
function Person(p_name,p_age){
this.name = p_name;
this.age = p_age;
}
var p1 = new Person('zhangsan',30);
var p2 = new Person('lisi',20);
alert(p1.name+p1.age);
alert(p2.name+p2.age);
在构造器中定义形参,实例化对象时,通过构造函数传参传递数据
2. this的深入理解
函数是由对象调起来的,在函数中的this就指向了这个对象
在js中,如何判断一个函数是以面向过程调用还是以面向对象形式来调用?
所有函数都是面向对象调用,普通函数的调用是由window对象调用的
function Person(p_name,p_age){
this.name = p_name;
this.age = p_age;
alert(typeof this);
alert(this.constructor);
}
var p1 = new Person('zhangsan',30);
上面代码中的this,指向p1对象
在JS,每一个页面也有一个this,这个this指向“谁“
<script>
/*alert(typeof this);
alert(this.constructor);*/
var i=10; //window.i=10;
this.i=20; //this.i window.i=20;
alert(window.i); // window.i this.i i
</script>