转载至:js面向对象编程
var arr = []; arr.number = 10; //对象下面的变量:叫做对象的属性 //alert( arr.number ); //alert( arr.length ); arr.test = function(){ //对象下面的函数 : 叫做对象的方法 alert(123); }; arr.test();//方法 arr.push();//方法 arr.sort();
var obj=new Object();//创建一个空的对象 obj.name='小明'; //属性 obj.showName=function(){ //方法 alert(this.name);//this指向obj } obj.showName();//小明
var obj1=new Object();//创建一个空的对象 obj1.name='小明'; //属性 obj1.showName=function(){ //方法 alert(this.name);//this指向obj } obj1.showName();//小明 var obj2=new Object();//创建一个空的对象 obj2.name='小灰'; //属性 obj2.showName=function(){ //方法 alert(this.name);//this指向obj } obj2.showName();//小灰
//工厂方式 : 封装函数 function createPerson(name){ var obj = new Object(); obj.name = name; obj.showName = function(){ alert( this.name ); }; return obj; } var p1 = createPerson('小明'); p1.showName(); var p2 = createPerson('小强'); p2.showName();
//new 后面调用的函数叫构造函数 function CreatePerson(name){ this.name=name; this.showName=function(){ alert(this.name); } } var p1=new CreatePerson('小明');//当new去调用一个函数时,函数中的this就是创建出来的对象而函数中的返回值就是this p1.showName(); var p2=new CreatePerson('小强'); p2.showName();
function CreatePerson(name){ this.name = name; this.showName = function(){ alert( this.name ); }; } var p1 = new CreatePerson('小明'); //p1.showName(); var p2 = new CreatePerson('小强'); //p2.showName(); alert( p1.showName == p2.showName ); //false 它们的值相同,地址不同
var a = [1,2,3]; var b = [1,2,3]; alert( a == b ); //false 值相同,地址不同 var a = 5; var b = a; b += 3 alert(b); //8 alert(a); //5 基本类型 : 赋值的时候只是值的复制
var a = [1,2,3]; var b = a; b.push(4); alert(b); //[1,2,3,4] alert(a); //[1,2,3,4] 对象类型 : 赋值不仅是值的复制,而且也是引用的传递
var a = [1,2,3]; var b = a; b = [1,2,3,4]; alert(b); //[1,2,3,4] alert(a); //[1,2,3]
var arr = [1,2,3,4,5]; var arr2 = [2,2,2,2,2]; Array.prototype.sum = function(){//原型prototype : 要写在构造函数的下面 var result = 0; for(var i=0;i<this.length;i++){ result += this[i]; } return result; }; alert( arr.sum() ); //15 alert( arr2.sum() ); //10
更多请看:js面向对象编程
文章来源: js面向对象编程