今天来说说什么是: 面向对象

版权声明:版权声明,未经博主允许不得转载。 https://blog.csdn.net/china_dou/article/details/82716407

js 是一种基于对象的语言,和其他面向对象语言不同。
例如:Math等内置对象,window对象,document对象等等。

JavaScript的面向对象编程和大多数其他语言如Java、C#的面向对象编程都不太一样。如果你熟悉Java或C#,很好,你一定明白面向对象的两个基本概念:
类:类是对象的类型模板,例如,定义Student类来表示学生,类本身是一种类型,Student表示学生类型,但不表示任何具体的某个学生;
实例:实例是根据类创建的对象,例如,根据Student类可以创建出xiaoming、xiaohong、xiaojun等多个实例,每个实例表示一个具体的学生,他们全都属于Student类型。
所以,类和实例是大多数面向对象编程语言的基本概念。
不过,在JavaScript中,这个概念需要改一改。JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。

创建对象:
对象是带有属性和方法的特殊数据类型
属性是与对象相关的值(变量),例如:
var message=”HELLO WORLD!”;
var x=message.length;
message是String 对象,length是对象的属性

方法是能够在对象上执行的动作(函数),例如:
var message=”HELLO WORLD!”;
var x=message.toLowerCase( ); // 方法只不过是附加在对象上的函数
message是String 对象,toLowerCase( )是对象的方法

JavaScript 自定义对象
创建新对象有多种不同的方法:
1. 直接给对象扩充属性和方法 、对象字面量
2. 工厂方式
3. 构造函数方式
4. 原型(prototype)方式
5. 混合方式(构造函数和原型)
………

  1. 构造函数方式
    当任意一个普通函数用于创建一类对象时,它就被称作 构造函数 或 构造器 (constructor),构造函数的作用就是初始化一个新创建的对象,并在使用对象前设置对象的属性和方法。
    通常是利用无敌的this,在函数内部对 this 添加属性和方法,因为this就表示当前运行时的对象,将构造函数this的作用域指向新对象,将当前运行对象的属性和方法都赋给新对象,这样的对象模式称为构造函数模式

  2. 原型(prototype)方式
    Javascript规定,每一个构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。

prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。这意味着,我们可以把那些不变的属性和方法,直接定义在prototype对象上
这时所有实例的属性和方法,其实都是同一个内存地址,指向prototype对象,因此就提高了运行效率。

在 JavaScript 中, constructor 属性返回对象的构造函数。
返回值是函数的引用,不是函数名:
JavaScript 数组 constructor 属性返回 function Array() { [native code] }
JavaScript 数字 constructor 属性返回 function Number() { [native code] }
JavaScript 字符串 constructor 属性返回 function String() { [native code] }

prototype和proto的概念
prototype是函数的一个属性(每个函数都有一个prototype属性),这个属性是一个指针,指向一个对象(原型对象)。
proto是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,proto是对象的内置属性),是JS内部用来寻找原型链的属性。
用chrome和FF都可以访问到原型(obj.proto)属性,IE不可以。

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

语法:apply([thisObj,[arg1,arg2])
参数:thisObj 可选项。将被用作当前对象的对象。
arg1, arg2, , argN 可选项。将被传递方法参数序列。

语法:call([thisObj,arg1,arg2)
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。*

我在后台看到很多都转发了,小编在这里谢谢大家了,希望文章对你和他(她)有帮助

猜你喜欢

转载自blog.csdn.net/china_dou/article/details/82716407