当前位置:首页 > 日记 > 正文

javascript面向对象编程的基础

javascript面向对象编程的基础
对面向对象的再认识

为了说明Javascript是一种彻底的面向对象语言,有必要从面向对象的概念入手,从以下几个方面讨论几个概念:

一切都是客体
对象具有封装和继承特性。
对象和对象之间使用消息通信,每个都有信息隐藏。
基于这三点,C++是一种半面向对象的半面向过程的语言,因为他虽然实现了封装、继承和多态的类,有全局函数和变量,不是面向对象的。java和C #是完全面向对象的语言,其组织功能和变量在类的形式他们离不开的对象。但功能本身是一个过程,但它是连接到一个班。

然而,对象的对象只是一个概念或编程思想。它不应该依赖于一种语言的存在。例如,java语言采用面向对象的思想构建,实现机制,如类、继承、派生、多态、接口等等,但这些机制是实现面向对象编程,一个是不必要的。换句话说,语言选择正确的方式来实现基于自身特点的对象,因为大多数程序员首先学习或使用类似于java,C++等高级编译语言(虽然java是半编译半解释,但一般是编译的解释),并接受类先入为主的面向对象的实现,所以,当学习一种脚本语言在面向对象语言中,习惯性的概念决定了语言是否是面向对象的语言类,或者它们是否具有面向对象的特性,这是阻碍程序员深入学习和掌握Javascript的重要原因之一。

事实上,Javascript语言是通过面向对象的程序设计来实现的,称为原型,然后讨论了基于类(基于类)、面向对象和基于原型的两种构建目标世界的方法之间的差异。

基于对象和原型的基于类的面向对象比较

在基于类的面向对象的方法,一个对象(object)是由类产生的(类)。在一个基于原型的面向对象方法中,对象(客体)是通过使用构造函数构造(构造函数)使用原型(原型)。对客观世界的一个例子来说明在认知的两方法的差异。例如,一辆汽车是在一个工厂。另一方面,工人必须按图纸指定的汽车应。这里是语言类的工程图纸(类),而汽车是用类一致(类)制成的;另一方面,工人和机器(相当于构造函数)使用各种部件如发动机、轮胎、转向轮(性能相当于原型)将被构造出来的车。

事实上,在这两种方式中,谁更明确地表达了面向对象的思想,目前仍存在争论,但我认为原型对象导向是一种更为彻底的面向对象的方法,其原因如下:

首先,客观世界中物体的产生是其他物体的结果,抽象的图纸不能产生汽车。也就是说,类是抽象概念而不是实体,对象的生成是实体的生成。

其次,根据事物中最基本的面向对象原理的对象,类(类)本身不是一个对象,而是构造函数(构造函数)和(原型)中的原型,原型本身是由其他对象构造成对象类型的。

再次,在面向对象语言中的类,对象的状态(状态)的对象实例(实例)认为,行为对象的方法(方法)是由对象的类声明举行的结构,只有对象的方法可以继承;并在原型对象语言对象的行为和状态,属于对象本身,并可以继承在一起(参见参考资料),这是更接近客观实际。

最后,类如java的面向对象语言,为了弥补全局函数和变量在面向过程语言的使用不便,让静态的静态属性和静态方法是在类中声明的。事实上,在客观世界中没有所谓的静态的概念,因为一切都是对象的。原型的面向对象语言,没有全局对象、方法或属性,或静态的概念,只有建立在对象。所有的语言元素(原始)必须依赖于对象的存在。然而,由于函数式语言的特性,在运行时上下文的变化而变化,是依赖于语言元素对象(背景),这是体现在这个指针的变化中,这个特征更接近于所有事物,宇宙是所有事物的基本存在的自然观点。
面向对象的知识

虽然Javascript本身是一个非类的概念,但它仍然具有面向对象的特性,尽管它与通用面向对象语言不同。

创建对象的简单方法如下所示:
功能MyObject(){

};

一般来说,在Javascript中创建对象有两种方法:函数构造方法和字面方法,属于函数构造方法:

VaR MyObject = { {

};

如果只需要一个对象,不需要对象的其他实例,建议使用一种字面方法。如果需要多个对象实例,则建议使用函数构造方法。

定义属性和方法

功能构建方法:
功能MyObject(){
this.iam =一个对象;

this.whatami =函数(){
console.log(我+这个。我);
};
};

直译法:
VaR MyObject = { {
我:一个对象,

whatami:函数(){
console.log(我+这个。我);
}
};

通过这两种方法创建的对象中,有一个名为我,和一种whatami。属性是一个对象中的变量和方法是一个函数对象中。

如何获取属性和调用方法:
无功W = myobject.iam;

MyObject.whatAmI();

当方法被调用时,必须添加圆括号。如果没有添加圆括号,它只返回方法的引用。

两种创建对象方法的区别

在函数构造方法中定义属性和方法时,使用前缀,而不需要文字量方法。
当函数构造方法将值赋给属性且方法为=时,字面量方法使用:。
如果有多个属性或方法,则使用函数构造方法;分区被分割,文字方法被使用和分离。
对于文字方法创建的对象,可以通过对象的引用直接调用对象的属性或方法:
MyObject.whatAmI();

对于函数构造方法,您需要创建对象的实例来调用它的属性或方法:
无功mynewobject =新的MyObject();
MyNewObject.whatAmI();

使用构造函数

现在回到函数构造方法之前:
功能MyObject(){
this.iam =一个对象;
this.whatami =函数(){
console.log(我+这个。我);
};
};

事实上,它似乎是一个函数,因为它是一个函数,它能被传递给它吗第二次修改代码。
功能MyObject(什么){
this.iam =什么;
this.whatami =功能(语言){
console.log(我+ this.iam ++语言+语言);
};
};

然后实例化对象并传递给参数:
无功mynewobject =新的MyObject(一个物体);
MyNewObject.whatAmI('javascript);

程序最终输出我是Javascript语言的对象。

两种创建对象的方法,我应该使用哪种方式

对于文本方法,因为它不需要实例化,如果修改了对象的值,则该对象的值将永远被修改。任何其他地方都被重新审视。对于函数构造,在修改值时,它修改实例的值。它可以实例化n个对象,每个对象可以拥有不同的值,而且不会互相干扰。

首先看字面方法:
无功myobjectliteral = { {
MyProperty:这是一个财产
};

console.log(myobjectliteral。myproperty); / / log'this是财产

myobjectliteral.myproperty =这是一个新的属性;

console.log(myobjectliteral。myproperty); / / log'this是一个新的属性

即使创建一个新变量来指向对象,结果也是一样的。
无功myobjectliteral = { {
MyProperty:这是一个财产
};

console.log(myobjectliteral。myproperty); / / log'this是财产

同一myobjectliteral var =;

myobjectliteral.myproperty =这是一个新的属性;

console.log(相同。myproperty); / / log'this是一个新的属性

再看函数构造法:
使用功能构建方法
无功myobjectconstructor =函数(){()
this.myproperty =这是财产的
};

实例化一个对象
无功constructorone =新myobjectconstructor();

/第二个对象实例化
无功constructortwo =新myobjectconstructor();

输出
console.log(constructorone。myproperty); / / log'this是财产

输出
console.log(constructortwo。myproperty); / / log'this是财产

正如预期的那样,这两个对象的属性值是相同的。如果其中一个对象的值被修复了呢

使用功能构建方法
无功myobjectconstructor =函数(){()
this.myproperty =这是财产的;
};

实例化一个对象
无功constructorone =新myobjectconstructor();

修改对象的属性
constructorone.myproperty =这是一个新的属性;

/第二个对象实例化
无功constructortwo =新myobjectconstructor();

输出
警报(constructorone。myproperty); / / log'this是一个新的属性

输出
警报(constructortwo。myproperty); / / log'this是财产

正如您所看到的,函数构造方法实例化的不同对象是独立的,每个对象都可以有不同的值,因此,最终使用什么样的方法来创建对象取决于实际情况。

相关文章

Javascript跨浏览器事件处理的详细解释

Javascript跨浏览器事件处理的详细解释

跨浏览器,解释,事件处理,详细,电脑软件,1。关于获取事件对象 FF有点固执,只支持论点{ 0 },不支持window.event.this时间,我真的不怪IE.虽然事件窗口的属性,它不是标准。然而,每个人都默认了这个小问题。FF已经独立多年了。因此,通过浏览器访问事…

ai混合图案,画出绚丽美丽的花朵。

ai混合图案,画出绚丽美丽的花朵。

混合,画出,绚丽,图案,美丽,本教程是介绍一种ai混合模式,将美丽美丽的花朵交给朋友。由教程绘制的花朵非常美丽。教程非常实用,巧妙地使用AI混合模式来推荐它们。 本教程所教的AI学习者使用AI混合模式来绘制美丽而美丽的花朵。本课程所画的花…

CDR只是制作美丽的珍珠字符。

CDR只是制作美丽的珍珠字符。

字符,美丽,电脑软件,CDR,本教程是介绍给一个朋友,利用CDR,使美丽的珍珠。它非常美丽和困难。这很难。它非常适合你学习。建议像你这样的朋友可以按照教程学习。 本教程教CDR的朋友使用CDR制作美丽的珍珠字符。这个过程非常简单。我希望你喜…

如何用注释词在word文档中添加常见

如何用注释词在word文档中添加常见

文档,常见问题,注释,如何用,电脑软件,1。添加自动编号的注释。 例如,添加到文档中的图;图1:officeba评论。 操作步骤:单击图片选中它,单击 - 参考;插在剧中,字幕标题对话框,单击在新的标签,标签;;;箱式字,点击按钮在1officeba打字;最后,单击确认按钮。 小…

QQ空间女性励志QQ空间报价

QQ空间女性励志QQ空间报价

空间,报价,女性,电脑软件,QQ,1,女孩,你可以性感,可以清纯,妖艳迷人但绝不平庸。 2,你不喜欢追求善和关怀,要坚定地说不或拒绝,即使他说,不管你做什么。 3、情人节,或者生日,没人能送花。你可以买这些花,送给爸爸妈妈漂亮的礼物。 4、如果你不能抽烟,就…

PS图象处理软件用水墨风格两曝光图

PS图象处理软件用水墨风格两曝光图

图像图像,用水,图象,处理软件,风格,作者做两次曝光的方法是很好的。 作者提出了两个风险很好。思路:先选择好材料,单独的字符拔出;抛光处理的特点是简单;纹理应用到上面的数字;复制字符的顶层,已故的调色板,然后修改混合模式,然后掩模控制显示范围…

基于jQueryCSS3动画特效点击弹出窗

基于jQueryCSS3动画特效点击弹出窗

窗体,动画特效,弹出,电脑软件,下面的图显示了通过jQuery CSS实现的单击动画弹出窗体源代码。有上传窗体,删除窗体,发送评论窗体,全部点击图标按钮动画弹出窗体源码特效。 结果如下所示: 在线预览源代码下载 HTML代码: 上传 选择文件 确定吗 …

word2003教程word2003教程插入多张

word2003教程word2003教程插入多张

教程,多张,电脑软件,最近,一本书是用word写的,里面有很多丰富的图片,但是当你插入一张图片时,你每次都要插入一张图片。在这种情况下,图片太多了,非常麻烦,有时也是错误的。是否有任何简单的方法同时插入多个或全部的图片 事实上,每次插入若干图片…

excel表将基数词转换为序数方法exc

excel表将基数词转换为序数方法exc

方法,序数,基数,转换为,电脑软件,Excel表转换成序数基数的方法。它是将英语的主教为序数词一个复杂的问题。因为它没有一个固定的模式:大多数的数字是一th使用;序数;后缀,但一般是1,23;在年底的数字是基于stndldquo,和;在rd结束,111213这3个数是不同…

如何用ps将背景PS转换成背景法

如何用ps将背景PS转换成背景法

背景,转换成,如何用,电脑软件,ps,你有没有想过把照片换成背景换个背景,有时候也要换个好心情,生活应该是多姿多彩的。所以如何用PS来改变图片背景,让大家来介绍一下,让我们来看看吧。 一直羡慕萧边的人用PS,他们可以美化图片,还可以改变背景图片…

Word2003删除Word2003教程中自动采

Word2003删除Word2003教程中自动采

教程,删除,电脑软件,Word2003是删除图形自动采集(自动图像采集:储存的文字或图形的位置,可以重复使用,例如,存储标准合同条款或更长的通讯组列表)。每个选定的文本或图形记录为自动采集;它的进入和独特的名字。)入职后,恢复的唯一方法是重新创建该条…

2015个经典搞笑签名推荐搞笑个性签

2015个经典搞笑签名推荐搞笑个性签

推荐,搞笑,个性签名,经典,电脑软件,计算机已成为一种必不可少的项目,对take-off.but发展信息时代,我相信每个人的电脑是腾讯的重要软件,今天会给你安排一些库存的各种2015经典搞笑签名!爱的副本。 1,我不多说话,如果有地方得罪,你是专门打我的。 2…