在看本文之前,我们可以先复习上一篇文章:《03-JavaScript基础/12-对象的创建&构造函数.md》
原型对象
原型的引入
1 | function Person(name, age, gender) { |
分析如下:
上方代码中,我们的sayName方法是写在构造函数 Person 内部的,然后在两个实例中进行了调用。造成的结果是,构造函数每执行一次,就会给每个实例创建一个新的 sayName 方法。也就是说,每个实例的sayName都是唯一的。因此,最后一行代码的打印结果为false。
按照上面这种写法,假设创建10000个对象实例,就会创建10000个 sayName 方法。这种写法肯定是不合适的。我们为何不让所有的对象共享同一个方法呢?
还有一种方式是,将sayName方法在全局作用域中定义:(不建议。原因看注释)
1 | function Person(name, age, gender) { |
比较好的方式是,在原型中添加sayName方法:
1 | Person.prototype.sayName = function(){ |