JS中的原型我们来搞懂它

2020-03-17  本文已影响0人  羞羞的王大锤

原型是什么?

JavaScript对象可以从其他对象那里继承属性和行为,更具体的来说,JavaScript使用原型式继承,其中被继承的对象成为原型。我们举个例子来说
比如我们创建一个小狗的原型,它有属性分别是name和weight,它有方法是bark

function Dog(name,weight){
    this.name = name;
    this.weight = weight;
}
Dog.prototype.bark = function(){
        alert('wang wang !')
    }

上面我们就创建好了小狗原型。你可能会发现,这里使用了prototype属性,它代表一个指向原型的引用
在我的另一篇文章中,介绍了构造函数,分析了构造函数的缺点,即使用构造函数时,每创建一个对象时,方法需要被复制,创建对象多时,会极大占用内存资源,影响应用程序的运行效率

而原型概念则完美的解决了这一问题。我们来创建几个小狗对象

var wangcai = new Dog('wangcai','20')
var xiaoqiang = new Dog('xiaoqiang','10')
var zhaocai  = new Dog('zhaocai','15')
wangcai.bark() 
xiaoqiang.bark()
zhaocai.bark()

正如上面的例子,这些小狗对象,都有brak方法,但是,在创建对象的时候bark方法不需要被复制,这里调用的bark方法只有一个,那就是原型的方法,JavaScript在查找方法的过程是这样的:

  1. 在对象中查找有没有定义bark方法
  2. 有则调用,没有定义它就会追溯原型链,直到找到bark之后再调用方法。这样一来不管创建多少个对象,都不会受影响,因为大家都共用一个方法,实现了共享
上一篇下一篇

猜你喜欢

热点阅读