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 对象)。
通过同一个构造函数创建出来的对象。共享同一个原型对象。原型对象初始化的时候是空的。我们能够在里面自己定义不论什么属性和方法,这些方法和属性都将被该构造函数所创建的对象继承。
假设原型发生了变化。那么全部实例都会跟着改变。
来源: http://www.bubuko.com/infodetail-2216312.html