三分钟带你看懂prototype原型——ES6进阶

三分钟带你看懂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原型里面找。


供交流,共勉~

猜你喜欢

转载自blog.csdn.net/qq_41297145/article/details/106925542
今日推荐