第四章 JavaScript面向对象

 

JavaScript中的数据类型

 

    number(数值类型)

 

    string(字符串类型)

 

    boolean(布尔类型)

 

    null(空类型)

 

    undefined(未定义类型)

 

    object(对象类型)

 

对象的概念是什么?如何创建对象?

       对象是包含相关属性和方法的集合体 属性 方法

       Object对象的方式创建对象              var 对象名称=new Object( );

var person=new Object();

person.name="小明";

person.sex="男";

person.age=18;

person.hobby="看书、看电影、健身、购物等";

person.showName=function(){

alert(this.name);}

person.showName();

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

       var person={

             name:"小明",

             sex:"男", age:18,

             hobby:"看书、看电影、健身、购物等",

             showName:function(){ alert(this.name);}

         }

         person.showName();

原型链

     一个原型对象是另一个原型对象的实例

      相关的原型对象层层递进,就构成了实例与原型的链条,就是原型链

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

什么是面向对象

         面向对象仅仅是一个概念或者编程思想 

        通过一种叫做原型的方式来实现面向对象编程

调用构造函数的4个步骤

      创建一个新对象

       将构造函数的作用域赋给新对象(this)

       执行构造函数中的代码

       返回新对象

常见的内置对象

String(字符串)对象

          length属性 indexOf( )方法、replace( )方法

Date(日期)对象

           get×××:获取年、月、日、时、分、秒等等

            set×××:设置年、月、日、时、分、秒等等

Array(数组)对象

            length属性 sort( )、concat( )、join( )方法

Boolean(逻辑)对象

              true或者false

              toString( )方法

 

Math(算数)对象

            round( )、max( )、min( )方法

RegExp对象

             RegExp是正则表达式的缩写

constructor属性指向Person

alert(person1.constructor==Person);

alert(person2.constructor==Person);

alert(person3.constructor==Person);

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

alert(person1 instanceof Object);

alert(person1 instanceof Person);

alert(person2 instanceof Object);

alert(person2 instanceof Person);

alert(person3 instanceof Object);

alert(person3 instanceof Person);

原型对象:是原来的对象

function Person (){

}

Person.prototype.name="小明";

Person.prototype.sex="男";

Person.prototype.age=18;

Person.prototype.hobby="看书、看电影、健身、购物等";

Person.prototype.showName=function() {

alert(this.name);

}

var person1=new Person();

person1.showName();

var person2=new Person();

person2.showName();

alert(person1.showName==person2.showName);

 

调用man1.getFoot( ) 经历的三个步骤

搜索实例

搜索Man.prototype

搜索Humans.prototype

对象继承

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);

借用函数

apply:应用某一对象的一个方法,用另一个对象替换当前对象

语法:apply([thisObj [,argArray]])

call:调用一个对象的一个方法,以另一个对象替换当前对象

语法: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

组合继承

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

posted @ 2020-06-22 19:53  sky、姚姚  阅读(91)  评论(0编辑  收藏  举报