function Star (uname, age) {
this.uname = uname;
this.age = age;
this.sing = function () {
console.log('I like sing songs')
}
}
实例成员
实例成员就是构造函数内部通过 this添加的成员,uname, age ,sing
就是实例成员
实例成员只能通过实例化对象来访问
var ldh = new Star('刘德华', 18);
console.log(ldh.uname);
静态成员
静态成员 指的是在构造函数本身上添加的成员
静态成员只能通过构造函数访问
Star.sex = 'man'
console.log(Star.sex) // man
console.log(ldh.sex) // undefined
构造函数很好用,但是容易造成内存浪费的问题
1.png var ldh = new Star();
var zxy = new Star();
console.log(ldh.sing === zxy.sing ) ; // false
Star
实例对象所分配的内存地址不一样
我们希望所有的实例对象使用同一个函数这样比较节省内存地址,需要怎么做呢?
原型对象
Star.prototype.dance = function () {
console.log('dance')
}
console.log(ldh.dance === zxy.dance); // true
构造函数通过原型对象分配的函数时所有对象共享的。 javascript 规定,每个构造函数都有一个 prototype属性,指向另一个对象
注意: prototype
就是一个对象,这个对象的所有属性和方法都会被构造函数所拥有
我们可以把那些不变的方法,直接定义在 prototype 对象上,这样所有对象的实例就可以共享这些方法
原型是什么: 一个对象 ,prototype
原型对象,
作用: 共享方法
网友评论