2015年05月28日

时间:2021-05-30 11:50:57
js对象 面向对象编程的语言中有一个非常重要的参数那就是类的概念,通过类我们可以创建出来各种各样的对象,而ECMAscript中没有类的概念,所以他与别的编程语言中处理对象的方式有所不同 js中对象概念:无数属性的集合,其属性可以包含基本值,对象或其他函数在 JavaScript 中,对象是拥有属性和方法的数据。方法是能在对象上执行的动作。 eg: var people = new object(); people.name="zhangsan"; people,age = 18; people.fun=function(){ alert(people.name+""+people.age) } people.fun(); var people={      name:"zhangsan",      age:18,      say:function(){          alert(this.name)      }  }people.say();delete people.name----注意点1:我们可以使用delete删除对象的某个属性 function people(name,age){        this.name=name;   ---在类中通过this关键字添加的属性输入共有   //那私有的呢?          this.age=age;        this.changeName=function(newName){            this.name=newName;        }    }    var zhangsan=new people("zhangsan",18);    zhangsan.changeName("lisi");    alert(zhangsan.name+" "+zhangsan.age)当您像这样声明一个 JavaScript 变量时:var txt = "hello world";其实已经声明了一个字符串对象(想想为什么这么说)字符串对象拥有内建的属性 length。对于上面的字符串来说,length 的值是 5。字符串对象同时拥有若干个内建的方法。 其实JavaScript 中的所有事物都是对象:字符串、数字、数组、日期,等等。对象基础部分结束. 创建对象:接下来就说常见的两种方式: 1、工厂模式 function creatpeople(name,age,sex){ var o= new object(); o.name=name; o.sex = sex; o.age = age; o.fun = function(){ alert(this.name); } return o; }  var zhangsan=createPeople("zhangsan",18,'male');    alert(zhangsan.name) 2.构造模式: 什么是构造函数?---用于构造一个对象出来的函数,例如Object  和数组等等 function People (name,age,sex){ this.name = name; this.age = age; this.sex = sex; this.fun = function(){ alert(this.name) } }  var zhangsan=new People("zhangsan",18,'male')    zhangsan.fun();在这个例子中和工厂模式的区别?直接将属性和方法赋值给了this对象,没有了return语句,语法注意,构造函数开头字母必须大写注意点:每个通过构造函数创建出来的对象都有一个constructor属性例如 alert(zhangsan.constructor)alert(zhangsan.constructor==People)注意构造函数毕竟也是函数,也可以当作参数传递1:var zhangsan=new People("zhangsan",18,'male')---当作构造函数使用2:People("zhangsan",18,'male')---当作普通函数调用,这里对象会被添加给window对象    window.fun();3:注意第三种----友情提示:前方高能 var o=new Object();  People.call(o,"zhansgan",18,'male')   o.fun(); call方法: 语法:xxx.call([thisObj[,arg1[, arg2[,   [,.argN]]]]])   arguments定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。  function add(a,b)    {        alert(a+b);    }    function sub(a,b)    {        alert(a-b);    }    add.call(sub,3,1); apply方法: 语法:apply([thisObj[,argArray]]) 定义:应用某一对象的一个方法,用另一个对象替换当前对象。 说明: 如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。  function Animal(){        this.name = "Animal";        this.showName = function(){            alert(this.name);        }    }
    function Cat(){        this.name = "Cat";    }
    var animal = new Animal();    var cat = new Cat();
    //通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。    //输入结果为"Cat"    //animal.showName.call(cat,",");    animal.showName.apply(cat,[]);
实现继承function Animal(name){          this.name = name;          this.showName = function(){              alert(this.name);          }      }          function Cat(name){        Animal.call(this, name);    }          var cat = new Cat("Black Cat");     cat.showName();