面向对象

Posted yqycr7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象相关的知识,希望对你有一定的参考价值。

1.面向对象:是一种编程的思想,程序里用面向对象的方法描述现实世界中的一个具体的事物,

2.对象

2.1什么是对象?

封装了一个事物的属性和功能的程序结构,其属性可以包括基本值,对象或者函数。对象的行为相当于其方法,特征相当于其属性。

2.2对象的创建

         2.11对象字面量:

var obj =

属性名:属性值,

……

方法名:function()

         this.属性名,

         this.方法名(),

 

……

Eg:var o =

  name: ‘zs‘,

  age: 18,

  sex: true,

  sayHi: function ()

    console.log(this.name);

 

;  

2.12 new Object()创建对象

var person = new Object();

  person.name = ‘lisit‘;

  person.age = 35;

  person.job = ‘actor‘;

  person.sayHi = function()

  console.log(‘Hello,everyBody‘);

2.13自定义构造函数

构造函数 ,是一种特殊的函数。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。

  1. 构造函数用于创建一类对象,首字母要大写。
  2. 构造函数要和new一起使用才有意义。

 

function Student(sname,sage)

                                   this.sname = sname;

                                   this.sage = sage;

                                   this.intr = function()

                                            console.log(`My name is $this.sname,I‘am $this.sage`);

                                  

                         

                          var lilei = new Student("Li Lei",11);

                          var lihua = new Student("Li Hua",11);

                          console.dir(lilei);

                          lilei.intr();

                          console.dir(lihua);

                          lihua.intr();

new : 4件事:

                          // 1、创建新的空对象

                          // 2、用new创建子对象时,会自动设置子对象的__proto__继承构造函数的prototype

                          // 3、用新对象去调用构造函数

                                   // new的功能将构造函数中的this指新对象

                                   // 向新对象中添加构造函数规定的属性

                                   // 将属性参数的值,保存到新对象的新属性中

                                   // 向新对象添加构造 函数规定的方法

                          // 4、将新对象的地址保存在变量

 

 

JS this指向总结:

关键:哪个对象调用函数,函数里面的this指向哪个对象。

1、        普通函数调用

var username=‘cn‘

function fn()

    alert(this.username);//cn

fu();

//---------------

window.username=‘cn‘

function fn()

    alert(this.username);//cn

fn();

//可以理解为

//window.fn();

 

2、        对象函数调用

这个相信不难理解,就是那个函数调用,this指向哪里

 

window.b=2222

var obj=

    a:111,

    fn:function()

        alert(this.a);//111

        alert(this.b);//undefined

   

  • obj.fn();

很明显,第一次就是输出obj.a,就是111。而第二次,obj没有b这个属性,所以输出undefined,因为this指向obj。

 

但是下面这个情况得注意

 

var obj1=

    a:222

;

var obj2=

    a:111,

    fn:function()

        alert(this.a);

   

  • obj1.fn=obj2.fn;
  • obj1.fn();//222

这个相信也不难理解,虽然obj1.fn是从obj2.fn赋值而来,但是调用函数的是obj1,所以this指向obj1

 

3、构造函数调用

 

var TestClass=function()

    this.name=‘111‘;

var subClass=new TestClass();

subClass.name=‘cn‘;

console.log(subClass.name);//cn

var subClass1=new TestClass();

console.log(subClass1.name)//111

 

以上是关于面向对象的主要内容,如果未能解决你的问题,请参考以下文章

224 面向对象编程介绍,面向过程与面向对象

面向对象-面向对象和面向过程的区别

面向对象分析与设计面向对象设计包括哪些内容

面向对象

面向过程面向对象及面向对象的三大特征

Python面向对象学习 1 (什么是面向对象,面向对象的应用场景)