第四章

第四章

JavaScript对象及初识面向对象

1.创建对象
1.自定义对象
基于Object对象的方式创建对象
var 对象名称=new Object( );

例:var flower=new Object();
    flower.name="长春花";
    flower.genera="夹竹桃科 长春花属";
    flower.area="非洲、亚热带、热带以及中国大陆的华东、西南、中南等地";
    flower.uses="观赏或用药等";
    flower.showName=function(){    alert(this.name);    }
    flower.showName();

使用字面量赋值方式创建对象

例:var flower={
        name:"长春花",
        genera:"夹竹桃科 长春花属",
        area:"非洲、亚热带、热带以及中国大陆的华东、西南、中南等地",
        uses:"观赏或用药等",
        showName:function(){ alert(this.name); }
    }
    flower.showName();

2.内置对象
①String(字符串)对象
length属性
indexOf( )方法、replace( )方法

②Date(日期)对象
get×××:获取年、月、日、时、分、秒等等
set×××:设置年、月、日、时、分、秒等等

③Array(数组)对象
length属性
sort( )、concat( )、join( )方法

④Boolean(逻辑)对象
true或者false
toString( )方法

⑤Math(算数)对象
round( )、max( )、min( )方法

⑥RegExp对象
RegExp是正则表达式的缩写

2.构造函数
1.创建构造函数
例:function Flower(name,genera,area,uses){
        this.name=name;
        ……
        this.showName=function(){
            alert(this.name);
        }
    }
    var flower1=new Flower("长春花","夹竹桃科 长春花属","非洲、亚热带、热带以及中国大陆的华东、西南、中南等地","观赏或用药等")
   flower1.showName();

注:构造函数始终都应该以一个大写字母开头

调用构函数的4个步骤:
①创建一个新对象
②将构造函数的作用域赋给新对象(this就指向了这个新对象)
③执行构造函数中的代码
④返回新对象

2.constructor属性
constructor属性指向Flower

例:alert(flower1.constructor==Flower);

3.instanceof操作符
使用instanceof操作符检测对象类型

例:alert(flower1 instanceof Object);
    alert(flower1 instanceof Flower);

4.原型对象
每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象;
prototype就是通过调用构造函数而创建的那个对象实例的原型对象

例:function Flower(){
    }
    Flower.prototype.name="曼陀罗花";
    Flower.prototype.genera="茄科 曼陀罗属";
    Flower.prototype.area="印度、中国北部";
    Flower.prototype.uses="观赏或药用";
    Flower.prototype.showName=function() {
        alert(this.name);
    }
    var flower1=new Flower();
    flower1.showName();
    var flower2=new Flower();
    flower2.showName();
    alert(flower1.showName==flower2.showName);

例:function Flower(){

    }
    Flower.prototype.name="曼陀罗花";
    Flower.prototype.genera="茄科 曼陀罗属";
    Flower.prototype.area="印度、中国北部";
    Flower.prototype.uses="观赏或药用";
    Flower.prototype.showName=function() {
        alert(this.name);
    }
    var flower1=new Flower();
    var flower2=new Flower();
    flower1.name="长春花";
    alert(flower1.name);
    alert(flower2.name);

3.继承
1.原型链
一个原型对象是另一个原型对象的实例;
相关的原型对象层层递进,就构成了实例与原型的链条,就是原型链

例:function Humans(){
        this.foot=2;
    }
    Humans.prototype.getFoot=function(){
       return this.foot;
    }
    function Man(){
        this.head=1;
    }
    Man.prototype=new Humans();                     //继承了Humans
    Man.prototype.getHead=function(){
        return this.head;
    }
    var man1=new Man();
    alert(man1.getFoot());                          //2
    alert(man1 instanceof Object);                  //true     
    alert(man1 instanceof Humans);                  //true
    alert(man1 instanceof Man);                     //true

调用man1.getFoot( ) 经历的三个步骤:
  搜索实例;
  搜索Man.prototype;
  搜索Humans.prototype

2.对象继承
例: function Humans(){
       this.clothing=["trousers","dress","jacket"];
    }
    function Man(){
    }                                   //继承了Humans
    Man.prototype=new Humans();
    var man1=new Man();
    man1.clothing.push("coat");
    alert(man1.clothing);
    var man2=new Man();
    alert(man2.clothing);

3.借用构造函数
apply([thisOjb[,argArray]])
应用某一对象的一个方法,用另一个对象替换当前对象

call([thisObj[,arg1[,arg2[,  [,argN]]]]])
调用一个对象的一个方法,以另一个对象替换当前对象

借用构造函数的一个大的优势
可以在子类型构造函数中向父类型构造函数传递参数

例:  function Humans(name){
        this.name=name;
    }
    function Man(){
        Humans.call(this,"mary");    //继承了Humans,同时还传递了参数
        this.age=38;                 //实例属性
    }
    var man1=new Man();
    alert(man1.name);                //输出mary
    alert(man1.age);                 //输出38

4.组合继承
组合继承:有时也叫做伪经典继承
将原型链和借用构造函数的技术组合到一块,发挥二者之长的一种继承模式;
使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值