构造函数里的this,外面的new
<script>
//用工厂方式构造对象
function createPerson(name, sex) //构造函数
{
//假想的系统内部工作流程
//var this=new Object();
this.name=name;
this.sex=sex; this.showName=function ()
{
alert('我的名字叫:'+this.name);
};
this.showSex=function ()
{
alert('我是'+this.sex+'的');
};
//假想的系统内部工作流程
//return this;
}
var p1=new createPerson('blue', '男');
var p2=new createPerson('leo', '女');
/*p1.showName();
p1.showSex();
p2.showName();
p2.showSex();*/
alert(p1.showName==p2.showName);
</script>
new出来的Object
类----这个东西类似于CSS里面的class,用来构造对象。类=构造函数
对象(实例)-----有自己的功能,被类构造出来
<script>
function show()
{
alert(this);
}
show(); //window
new show(); //新创建的对象
</script>
原型---解决了资源浪费,多次重复的创建对象的问题。
<script>
var arr1=new Array(12, 5, 8, 4);
var arr2=new Array(44,6,5,4,5,55,9);
//arr1.sum=function ()
Array.prototype.sum=function ()
{
var result=0;
var i=0;
for(i=0;i<this.length;i++)
{
result+=this[i];
}
return result;
};
/*alert(arr1.sum());
alert(arr2.sum());*/
alert(arr1.sum==arr2.sum);
</script>
构造函数+prototype
<script>
function Person(name, sex)//构造函数用来添加属性,属性是变化的
{
this.name=name;
this.sex=sex;
}
Person.prototype.showName=function ()//原型用来添加方法,方法是不变的
{
alert(this.name);
};
Person.prototype.showSex=function ()
{
alert(this.sex);
};
var p=new Person('bee', '男');
p.showName();
p.showSex();
</script>
原型和对象方法的优先级
<script>
Array.prototype.a=12;
var arr=[1,2,3];
alert(arr.a); //
arr.a=5;
alert(arr.a); //5,这个的优先级更高
delete arr.a;
alert(arr.a); //
</script>