js面向对象

很多人可能搞不懂js中的面向对象,现在我来简单的描述下...

首先创建一个Dog函数,并new 一个对象,其中函数有prototype属性,对象有__proto__属性,这时在控制台打印看一下

这时可以得到以下原型图

现在我来自定义下系统自带的原型对象

 

再看看控制台打印

虽然改成了自定了,但是还是指向默认的constructor

 

然后我们又创建一个init方法和show方法

并直接先调用show方法发现控制台打印的是:

undefined,证明还没有执行过init方法,并没有向name和age赋值。

而先调用init方法就能够得到。当每次调用前都要调用一次,比价麻烦,现在就要改造一下代码。

在创建对象返回时就执行init()方法:然后

此时在控制台会看到:

其原因是此d对象是返回的Dog.prototype.init();返回的是init()函数指向的init函数的prototype,而show函数指向的是Dog函数的prototype。如下图

 

 此时要解决只需要将Dog的prototype赋值给Dog.prototype.init.prototype

此时控制台就能打印出结果了

并且此时的原型图是如下

总结:只要是一个函数,就有它对应的原型对象,对象是由哪个函数创建的也就对应着哪一个原型对象。

 

来源:http://www.cnblogs.com/xuelin1221/p/10026090.html


智能推荐

浅谈JS面向对象

浅谈JS面向对象 一 、什么是面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。注重代码的过程部分。 二、什么是面向对象 最先出现在管理学中,是一种管理资源(资源等于空间)和能力(能力导致运动,运动等于时间)的方法论。 面向对象是一种思维方法 面向对象是一种编程方法 面向对象并不只针对某一种编程语言 三、面向对象和面向过程的区别和联系 ...

js--面向对象

面向对象主要分为两大块:类与实例和类与继承 类与实例 类的声明–两种(ES5和ES6) 实例–直接new console.log(new Animal(), new Animal1()); 类与继承 对原型链的掌握 如何实现继承 每种方法都思考: 实现继承的那种方式 1.原理是什么,2. 有什么特点,3. 有没有缺点需要继续改进 第一种:通过构造函数 – cal...

JS与面向对象

http://www.renfed.com/2017/05/21/js-oop/?utm_source=tuicool&utm_medium=referral 1. 什么是面向对象? —首先,面向对象并不是说你写一个class就是面向对象了。在Java里面Everything is class,全部都是Class,还有React也需要写class,所以很多人写class并不是他自己要写cl...

JS面向对象高级特性

JS面向对象高级特性 本篇是通过学习视频《一头扎进javascirpt高级篇》整理的一些相关知识,大致包括下面几个方面:   1 对象的创建方法   2 对象的对象属性、私有属性、类属性   3 对象的对象方法、私有方法、类方法   4 javascirpt的继承、封装、与多态   对象的创建方法:   对象的创建可以通过两种方式,第一种通过对象初始化的方法:   第二种方式通过构造函数创建: &...

关于JS面向对象继承问题

1.原型继承(是JS中很常用的一种继承方式)   子类children想要继承父类father中的所有的属性和方法(私有+公有),只需要让children.prototype=new father;即可。   特点:它是把父类中私有的+公有的都继承在了子类原型上(子类公有的)   核心:原型继承并不是把父类中的属性和方法克隆一份一模一样的给子类,而是让子类和父类之间增加了原型链的连接,以后子类的实...

猜你喜欢

AWS S3存储基于Hadoop之上的一致性保证

前言 Hadoop发展至今,它所涵盖的周边生态圈已经非常庞大了。但是作为一套目前看来如此成熟的系统,免不了要做一些兼容性的事情,比如一些第三方服务类型的系统。毕竟有些用户会使用到第三方的系统,但又不想去改变现有程序运行的模式以及学习第三方系统的成本。Hadoop作为一个如此成熟的项目,在兼容其它第三方系统上,肯定是有考虑到。今天,笔者就来讲讲目前Amazon S3服务与Hadoop的集成兼容性问题...

matlab支持向量机

关于支持向量机(SVM)的一个简单应用实例及matlab代码  (2014-04-23 10:32:35) 转载▼   分类: 信号处理 ********************************************************   ****************************************************...

HTTP2.0和HTTP1.X相比的新特性

1.新的二进制格式(Binary Format): HTTP1.x的解析是基于文本。(文本的表现形式有多样性,要考虑的场景很多才能做到健壮性) 基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。 2.HTTP2.0比HTTP1.0有路复用(MultiPlexing): 即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可...

概念的完整性

定义   概念的完整性,是指针对于一个领域,不仅了解该领域的所有对象,并且了解所有对象之间的关系。比如,小学数学中的四则运算。所有的对象就是指有理数,所有的关系就是由加减乘除四种运算而能够产生另外一个有理数。如果对这样的计算完全了解的话,那么使用这样的领域来解决问题就不成问题。   人月神话   概念的完整性在一本20年了还是非常深刻的软件工程书中被重点提出。这本书叫...

问答精选

How is the workflow/ sequence of the JS: compare function to an array?

I know that's function: is fully working for sorting array contain number in ascending.. If the result is negative a is sorted before b. If the result is positive b is sorted before a. If the result i...

How to use javascript variable out of the scope?

I am using $.get functionality to get json data from action method. But out of $.get() function JavaScript variable getting default value. code look like: Output display look like: And then Display 0....

XMLSchema validation for StAX parser

In DOM or SAX parsers in Java it is possible to define the XML Schema to use by calling methods DocumentBuilderFactory.setSchema(..) or SAXParserFactory.setSchema(...). How can I do the similar thing ...

java.lang.NoSuchFieldError: IBM_JAVA for a simple hbase java client in Eclipse

As the title goes.My source code is: It seems that this error has nothing to do with hbase server because I can use hbase shell properly. But I really don't konw how to fix this problem.Both from my L...

Postgres: convert a list of "name=value" values into a table

Convert this string: using something like this (in Postgres 9.x): to get a result like this: PS: I can't create any function, so I need to use Postgres built in functions only. Thanks in advance. stri...

相关问题

相关文章

热门文章

推荐文章

相关标签

推荐问答