javascript中提供了构造函数。可以方便的创建对象。

典型的构造函数例如以下:

function Person(name, age)
{
  this.name = name;
  this.age = age;
  this.say = function () {
    return this.name + ',' + this.age;;
}

之后就能够用new和构造函数创建多个对象。javascript中。类的不同对象之间,属性和方法都是独立的。什么意思呢?java中类的不同对象之间,成员变量是独立的(每一个对象都有自己的存储空间。存储属性值)。可是方法是共享的,内存中仅仅有一份。可是javascript中,方法也是一个对象一份。假设复创建了多个对象,那么每一个对象中的方法都会在内存中开辟新的空间,这样浪费的空间就比較多。

var p1= new Person('a', 25);
var p2= new Person('b', 22);
alert(p1.say == p2.say);//结果返回的是false,说明方法内存空间也不同

javascript中没有什么static和成员变量之分,假设想在对象之间共享数据或方法,仅仅能借助原型对象。将共享的变量和方法都放在原型对象中。

function User(name,age)
{
this.name = name;
this.age = age;
}
User.prototype.addr = 'shenzhen';//在原型中加入属性
User.prototype.show = function(){//在原型中加入方法
alert(this.name+'|'+this.age);
};
var user1 = new User('ZXC',22);
var user2 = new User('CXZ',21);
alert(user1.show == user2.show);//返回 true 说明show方法是共享的

JS的构造函数都有一个prototype属性,指向它的原型对象(事实上就是个普通的JS对象)。

通过同一个构造函数创建出来的对象。共享同一个原型对象。原型对象初始化的时候是空的。我们能够在里面自己定义不论什么属性和方法,这些方法和属性都将被该构造函数所创建的对象继承。

假设原型发生了变化。那么全部实例都会跟着改变。

简单理解javascript中的原型对象,实现对之间共享属性和行为的更多相关文章

  1. 一句话简单理解javascript中的原型对象

    通过构造函数F创建的对象实例p 这个对象p的原型对象是 构造函数中prototype属性指向的对象s,这个对象p中也有个非标准的__proto__属性指向构造函数prototype属性所指向的对象s, ...

  2. Javascript 构造函数、原型对象、实例之间的关系

    # Javascript 构造函数.原型对象.实例之间的关系 # 创建对象的方式 # 1.new object() 缺点:创建多个对象困难 var hero = new Object(); // 空对 ...

  3. 理解JavaScript中的原型继承(2)

    两年前在我学习JavaScript的时候我就写过两篇关于原型继承的博客: 理解JavaScript中原型继承 JavaScript中的原型继承 这两篇博客讲的都是原型的使用,其中一篇还有我学习时的错误 ...

  4. 深入理解javascript构造函数和原型对象

    ---恢复内容开始--- 对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅..(哔! ...

  5. 理解javascript中的原型模式

    一.为什么要用原型模式. 早期采用工厂模式或构造函数模式的缺点:  1.工厂模式:函数creatPerson根据接受的参数来构建一个包含所有必要信息的person对象,这个函数可以被无数次的调用,工厂 ...

  6. 如何理解JavaScript中的原型和原型链

    首先是一张关系图,避免抽象化理解时产生的困难 Function对象 函数对象是JavaScript学习中不可避免的一部分,而且这一部分相对重要且抽象 函数的创建方式有2种: 字面量创建 var foo ...

  7. javascript中的原型对象

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. 简单理解Javascript中的call 和 apply

    javascript中面向对像的能力是后来加进来的, 为了兼容性, 所以整出了很多奇特的东西, function Animal(){ this.name = "Animal"; t ...

  9. 理解JavaScript中的window对象

    前言 每个JavaScript环境都有一个全局对象(global object).在全局范围内创建的任何变量实际上都是这个对象的属性,而任何函数都是它的方法.在浏览器环境中,全局对象是window对象 ...

随机推荐

  1. pl/sql的控制结构,分支、循环、控制

    一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...

  2. SpriteKit-SKView

    1.暂停这个视图 @property (nonatomic, getter = isPaused) BOOL paused; 2.视图性能的一些参数 @property (nonatomic) BOO ...

  3. C++之Effective STL学习笔记Item21

    好了,先贴一段英文,真心不想翻译过来,而且感觉也翻译不到那么到位: The STL is awash in comparisons of objects to see if they have the ...

  4. mysql 游标的使用总结

    一.游标的基本概念 游标:游标是一个存储在Mysql服务器上的数据库查询,它不是一条select语句,而是被该语句检索出来的结果集. 本人,学习游标中,曾遇到一个问题,循环总是最后多执行一次.下面分析 ...

  5. 刷题总结——生产产品(vijo1243)

    题目: 描述 在经过一段时间的经营后,dd_engi的OI商店不满足于从别的供货商那里购买产品放上货架,而要开始自己生产产品了!产品的生产需要M个步骤,每一个步骤都可以在N台机器中的任何一台完成,但生 ...

  6. mybatis学习(十)——缓存介绍

    与Hibernate一样,MyBatis 也提供了一级缓存和二级缓存的支持. 1.一级缓存:(本地缓存)SqlSession级别的缓存,默认一直开启的 , 与数据库同一次会话期间的数据会放到本地缓存中 ...

  7. Java数据库连接JDBC用到哪种设计模式?

    还没看桥接模式,占tag 桥接模式: 定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化. 意图 :将抽象与实现解耦. 桥接模式所涉及的角色 1.  Abstraction :定义抽象接口, ...

  8. 【2018.12.17】NOI模拟赛4

    题目 WZJ题解 T1 T2 T3 后缀自动机+($parents$ 树)树链剖分 发现有大量子串需要考虑,考虑摁死子串的一端. 首先,这题显然是一道离线题,因为所有的询问都是 $1$ 到 某个数,也 ...

  9. Java面试题之Array和ArrayList的区别

    Array和ArrayList的区别: 1.Array类型的变量在声明的同时必须进行实例化(至少得初花数组的大小),而ArrayList可以只是先声明: 2.Array始终是连续存放的:而ArrayL ...

  10. 【bzoj2216】[Poi2011]Lightning Conductor 1D1D动态规划优化

    Description 已知一个长度为n的序列a1,a2,…,an.对于每个1<=i<=n,找到最小的非负整数p满足 对于任意的j, aj < = ai + p – sqrt(abs ...