三分钟带你看懂prototype原型——ES6进阶
1. prototype 定义
在JS中的类的实现是基于Prototype的,基于原型的继承比基于类的继承在概念上更为简单:一个新对象可以继承一个旧对象的属性
2. new 构造函数
代码很短很简单,要看完嗷~
// 源于黑马视频教程
function Star(uname,age){
this,uname = uname;
this.age = age;
this.sing = function(){
console.log('我会唱歌')
}
}
var ldh = new Star('刘德华',18)
var zxy = new Star('张学友',19)
如图,构造函数,又称类函数,与普通的函数没什么区别,但是前面加上了 new ,就能够在内存中重新开辟内存空间
3. 存储
上文中有提到 new 关键字,既然是分配出了新的内存空间,从性能方面考虑,自然要让分配的内存尽可能的少,换句话说,应该将相同的部分整合到一个相对固定的内存空间里面公用,而不是开辟一个新的内存空间。
4. prototype 作用
没错,prototype的作用就是 共享方法 ,在上面的例子中,ldh和zxy对象都有一个sing方法,我们想要他们共享同一个内存方法,让new时所分配的内存空间尽可能的少。
所以我们对上面的代码进行如下处理:
Star.prototype.sing = function(){
console.log('我会唱歌')
}
这样,我们就把上面的2个sing的内存空间整合到了一起,以后new出的对象,都会到Star原型里面去找。
ps:换句话说,先在对象ldh、zxy里面找sing方法,要是找不到,就跑到上一级,也就是Star原型里面找。
供交流,共勉~