简单理解javascript中的原型对象,实现对之间共享属性和行为
2017-07-19 12:00
543 查看
javascript中提供了构造函数。可以方便的创建对象。
典型的构造函数例如以下:
之后就能够用new和构造函数创建多个对象。javascript中。类的不同对象之间,属性和方法都是独立的。什么意思呢?java中类的不同对象之间,成员变量是独立的(每一个对象都有自己的存储空间。存储属性值)。可是方法是共享的,内存中仅仅有一份。可是javascript中,方法也是一个对象一份。假设复创建了多个对象,那么每一个对象中的方法都会在内存中开辟新的空间,这样浪费的空间就比較多。
javascript中没有什么static和成员变量之分,假设想在对象之间共享数据或方法,仅仅能借助原型对象。将共享的变量和方法都放在原型对象中。
JS的构造函数都有一个prototype属性,指向它的原型对象(事实上就是个普通的JS对象)。
通过同一个构造函数创建出来的对象。共享同一个原型对象。原型对象初始化的时候是空的。我们能够在里面自己定义不论什么属性和方法,这些方法和属性都将被该构造函数所创建的对象继承。
假设原型发生了变化。那么全部实例都会跟着改变。
典型的构造函数例如以下:
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中的原型对象,实现对之间共享属性和行为
- javascript 将共享属性迁移到原型中去的实现方法
- Javascript学习笔记1 理解对象 属性 原型对象
- 用一张简单的图理解JavaScript对象的prototype原型
- JavaScript为对象原型prototype添加属性的两种方式
- 在Delphi与C++之间实现函数与对象共享
- 用JAVASCRIPT实现静态对象、静态方法和静态属性
- javascript 用原型继承来实现对象系统
- javascript中Object类原型对象的属性和方法
- javascript 对象及原型继承有关的属性:constructor、prototype、isPrototypeOf、instanceof、in 、hasOwnProperty 等等
- 再践javascript对象、原型、属性、构造函数、扩展、json
- 用JAVASCRIPT实现静态对象、静态方法和静态属性
- javascript-简单的日历实现及Date对象语法介绍(附图)
- [C++应用程序性能优化]类的静态成员变量实现同一个类多个对象之间共享数据
- 简单实现window与linux之间的文件共享
- 在Delphi与C++之间实现函数与对象共享
- Javascript的原型对象和prototype属性
- 在Delphi与C++之间实现函数与对象共享
- javascript 原型链、执行环境、作用域链、实例对象之间的关系
- 简单实现XP与WIN7之间的共享