通过javascript中的new认识基于原型的面向对象。

转载 2012年03月31日 13:29:37
j
函数就是对象。
其实通常我们在javascript里定义的一个函数,都对应着一个以这个函数体为构造函数的对象。
而javascript与java不同的是,他是面向原形的面向对象语言。java是基于类的面向对象语言。
也就是说,可以通过对象来new出一个新的对象。
比如:定义 function fun(p1,p2){} 时, 实际上生成了一个Function类型(预定义类型)的对象,对象名叫fun,对象的构造函数就是这个函数的体. 
于是,也可以用另一种方式定义刚才的函数(其实是对象)。
fun=new Function(‘p1,’p2’,…) ;(这种方式定义时,前面的参数都是函数的参数。只有最后一对 ‘’ 里,写入函数体)
对于这个对象,采用fun.var=“XXX”的方式,就可以为对象增加一个属性。而无须声明。

从对象org 去new一个新对象时,首先调用该org的构造函数(函数org定义时的函数体为对象 org的构造函数)。
然后将org对象的prototype属性的子属性(函数和变量)copy到新对象中。
还有构造函数里以 this.XXX= [ function (){}或“xxx”] 形式定义的XXX属性也copy到新对象中去。

当然在对象生成后,也可以另行添加属性(即函数)。
一种方式是其父对象的prototype.xxx下添加,一种是其自己 self.xxx方式添加。
在搜索的时候,先搜索自身然后在搜索父对象的prototype下的属性。即后者可以覆盖前者。


  在JavaScript中,prototype对象是实现面向对象的一个重要机制。

  每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。
  在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。
  1、该对象被类所引用,只有函数对象才可引用;
  2、在new实例化后,其成员被实例化,实例对象方可调用。
  同时,函数是一个对象,函数对象若直接声明成员,不用被实例化即可调用。

深入javascript面向对象,js的原型链、继承

进阶面向对象——————————————————————–在JS源码中,系统对象也是基于原型的程序, 尽量不要去添加和修改系统对象的方法 包装对象——————————————————————–基本类型...
  • u014420383
  • u014420383
  • 2015年08月15日 08:57
  • 1224

基于原型的JavaScript面向对象

1、前言 从JavaScript开始流行到今天,学习它的人都会有个疑惑——JavaScript是不是面向对象语言?其实,ECMA-262早就给出了答案,在ECMAScript的第一个版本中就明确指出...
  • zqjflash
  • zqjflash
  • 2014年03月30日 12:28
  • 764

javascript中面向对象中对象,属性,原型链和一些扩展知识总结

一、什么是面向对象和什么是面向对象编程: 面向对象:就是找个工具,帮我完成一项工作,对象就像一个工具一样,每个工具都可以帮我们实现某个功能,比如汽车可以实现运输,我们只需要学会如何去开动汽车,而不需要...
  • Tyro_java
  • Tyro_java
  • 2016年04月14日 22:19
  • 4708

JavaScript prototype原型和原型链详解

用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了,...
  • i10630226
  • i10630226
  • 2015年10月21日 14:25
  • 1467

面向对象和原型知识点

## JavaScript高级第二天 ### 面向对象的三大特性     * 封装     * 继承         自己没有的,拿别人过来用,就是继承     * 多态     ...
  • qq_22844483
  • qq_22844483
  • 2016年10月22日 08:51
  • 616

JavaScript中原型对象的彻底理解

一、什么是原型 原型是Javascript中的继承的继承,JavaScript的继承就是基于原型的继承。 1.1 函数的原型对象​ 在JavaScript中,我们创建一个函数A(就是声明一个...
  • u012468376
  • u012468376
  • 2016年11月10日 20:43
  • 10591

深入探讨javascript中对象,原型(__proto__),与prototype的关系

最近在学习node.js,学习过程中遇到很多坑,总结下来是对核心javascript(新手童鞋别误解,这里说的不是客户端javascript哦。两者有相似性,侧重点不同)的相关知识认识相对浅薄导致,所...
  • hkh_1012
  • hkh_1012
  • 2016年11月18日 15:26
  • 950

关于面向对象的三个基本特征 封装、继承、多态 ’

吾思                                                                                                 ...
  • FroSro
  • FroSro
  • 2016年10月13日 18:51
  • 232

javascript中的面向对象理解(一)

一、注意:提到“面向对象”这一概念,众所周知,javascript中的面向对象思想与其他的编程语言(例如:PHP、Java等)是有着很大区别的。因此,我们先复习下,传统意义上,面向对象的相关概念,以便...
  • u014516981
  • u014516981
  • 2016年10月19日 23:48
  • 1859

面试百题001——谈谈你对面向对象编程的认识

面向对象程序设计的基本概念:面向对象, 概括地说, 就是把问题抽象为对象, 设置属性(数据) , 指定事件或处理方式(代码) 来达到目的, 强调从问题域的概念到软件程序和界面的直接映射。面向对象程序设...
  • seven_13
  • seven_13
  • 2013年08月29日 15:34
  • 4890
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过javascript中的new认识基于原型的面向对象。
举报原因:
原因补充:

(最多只允许输入30个字)